Browse Source

qt: make QtEventListener more robust against stale PyQt wrappers

master
Sander van Grieken 2 years ago
parent
commit
1e570bdd36
  1. 9
      electrum/gui/qt/util.py

9
electrum/gui/qt/util.py

@ -1335,10 +1335,7 @@ class ImageGraphicsEffect(QObject):
return result return result
class QtEventListener(EventListener): class QtEventListener(EventListener):
qt_callback_signal = QtCore.pyqtSignal(tuple) qt_callback_signal = QtCore.pyqtSignal(tuple)
def register_callbacks(self): def register_callbacks(self):
@ -1346,13 +1343,17 @@ class QtEventListener(EventListener):
EventListener.register_callbacks(self) EventListener.register_callbacks(self)
def unregister_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) EventListener.unregister_callbacks(self)
def on_qt_callback_signal(self, args): def on_qt_callback_signal(self, args):
func = args[0] func = args[0]
return func(self, *args[1:]) return func(self, *args[1:])
# decorator for members of the QtEventListener class # decorator for members of the QtEventListener class
def qt_event_listener(func): def qt_event_listener(func):
func = event_listener(func) func = event_listener(func)

Loading…
Cancel
Save