1
0

qt: make QtEventListener more robust against stale PyQt wrappers

This commit is contained in:
Sander van Grieken
2023-08-15 12:19:02 +02:00
parent 2a2459c649
commit 1e570bdd36

View File

@@ -1335,10 +1335,7 @@ class ImageGraphicsEffect(QObject):
return result
class QtEventListener(EventListener):
qt_callback_signal = QtCore.pyqtSignal(tuple)
def register_callbacks(self):
@@ -1346,13 +1343,17 @@ class QtEventListener(EventListener):
EventListener.register_callbacks(self)
def unregister_callbacks(self):
self.qt_callback_signal.disconnect()
try:
self.qt_callback_signal.disconnect()
except RuntimeError: # wrapped Qt object might be deleted
pass
EventListener.unregister_callbacks(self)
def on_qt_callback_signal(self, args):
func = args[0]
return func(self, *args[1:])
# decorator for members of the QtEventListener class
def qt_event_listener(func):
func = event_listener(func)