@@ -1453,8 +1453,10 @@ cdef class _IO(object):
14531453 def __init__ (self ):
14541454 self ._ptr = & cimgui.GetIO()
14551455 self ._fonts = _FontAtlas.from_ptr(self ._ptr.Fonts)
1456- self ._get_clipboard_text_fn = None
1457- self ._set_clipboard_text_fn = None
1456+
1457+ if < uintptr_t> cimgui.GetCurrentContext() not in _io_clipboard:
1458+ _io_clipboard[< uintptr_t> cimgui.GetCurrentContext()] = {' _get_clipboard_text_fn' : None ,
1459+ ' _set_clipboard_text_fn' : None }
14581460
14591461 # ... maping of input properties ...
14601462 @property
@@ -1634,35 +1636,35 @@ cdef class _IO(object):
16341636
16351637 @staticmethod
16361638 cdef const char * _get_clipboard_text(void * user_data):
1637- text = _io.get_clipboard_text_fn ()
1639+ text = _io_clipboard[ < uintptr_t > cimgui.GetCurrentContext()][ ' _get_clipboard_text_fn ' ] ()
16381640 if type (text) is bytes:
16391641 return text
16401642 return _bytes(text)
16411643
16421644 @property
16431645 def get_clipboard_text_fn (self ):
1644- return self . _get_clipboard_text_fn
1646+ return _io_clipboard[ < uintptr_t > cimgui.GetCurrentContext()][ ' _get_clipboard_text_fn' ]
16451647
16461648 @get_clipboard_text_fn.setter
16471649 def get_clipboard_text_fn (self , func ):
16481650 if callable (func):
1649- self . _get_clipboard_text_fn = func
1651+ _io_clipboard[ < uintptr_t > cimgui.GetCurrentContext()][ ' _get_clipboard_text_fn' ] = func
16501652 self ._ptr.GetClipboardTextFn = self ._get_clipboard_text
16511653 else :
16521654 raise ValueError (" func is not a callable: %s " % str (func))
16531655
16541656 @staticmethod
16551657 cdef void _set_clipboard_text(void * user_data, const char * text):
1656- _io.set_clipboard_text_fn (_from_bytes(text))
1658+ _io_clipboard[ < uintptr_t > cimgui.GetCurrentContext()][ ' _set_clipboard_text_fn ' ] (_from_bytes(text))
16571659
16581660 @property
16591661 def set_clipboard_text_fn (self ):
1660- return self . _set_clipboard_text_fn
1662+ return _io_clipboard[ < uintptr_t > cimgui.GetCurrentContext()][ ' _set_clipboard_text_fn' ]
16611663
16621664 @set_clipboard_text_fn.setter
16631665 def set_clipboard_text_fn (self , func ):
16641666 if callable (func):
1665- self . _set_clipboard_text_fn = func
1667+ _io_clipboard[ < uintptr_t > cimgui.GetCurrentContext()][ ' _set_clipboard_text_fn' ] = func
16661668 self ._ptr.SetClipboardTextFn = self ._set_clipboard_text
16671669 else :
16681670 raise ValueError (" func is not a callable: %s " % str (func))
@@ -1811,14 +1813,9 @@ cdef class _IO(object):
18111813 def mouse_delta (self ):
18121814 return _cast_ImVec2_tuple(self ._ptr.MouseDelta)
18131815
1814- _io = None
1816+ _io_clipboard = {}
18151817def get_io ():
1816- global _io
1817-
1818- if not _io:
1819- _io = _IO()
1820-
1821- return _io
1818+ return _IO()
18221819
18231820def get_style ():
18241821 return GuiStyle.from_ref(cimgui.GetStyle())
0 commit comments