From 1e570bdd36d868e8735e1e416bc18f0f2c7b6cea Mon Sep 17 00:00:00 2001 From: Sander van Grieken Date: Tue, 15 Aug 2023 12:19:02 +0200 Subject: [PATCH] qt: make QtEventListener more robust against stale PyQt wrappers --- electrum/gui/qt/util.py | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/electrum/gui/qt/util.py b/electrum/gui/qt/util.py index 4b55ed684..a7a3a3355 100644 --- a/electrum/gui/qt/util.py +++ b/electrum/gui/qt/util.py @@ -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)