diff --git a/electrum/gui/qml/qenetwork.py b/electrum/gui/qml/qenetwork.py index 11ed92cb1..b6eda0bb4 100644 --- a/electrum/gui/qml/qenetwork.py +++ b/electrum/gui/qml/qenetwork.py @@ -55,6 +55,7 @@ class QENetwork(QObject, QtEventListener): self._height = network.get_local_height() # init here, update event can take a while self._server_height = network.get_server_height() # init here, update event can take a while self.register_callbacks() + self.destroyed.connect(self.unregister_callbacks) self._qeconfig.useGossipChanged.connect(self.on_gossip_setting_changed) diff --git a/electrum/gui/qml/qeswaphelper.py b/electrum/gui/qml/qeswaphelper.py index 393067cad..e9d019113 100644 --- a/electrum/gui/qml/qeswaphelper.py +++ b/electrum/gui/qml/qeswaphelper.py @@ -14,8 +14,9 @@ from electrum.util import NotEnoughFunds, NoDynamicFeeEstimates, profiler from .auth import AuthMixin, auth_protect from .qetypes import QEAmount from .qewallet import QEWallet +from .util import QtEventListener, qt_event_listener -class QESwapHelper(AuthMixin, QObject): +class QESwapHelper(AuthMixin, QObject, QtEventListener): _logger = get_logger(__name__) confirm = pyqtSignal([str], arguments=['message']) @@ -52,12 +53,14 @@ class QESwapHelper(AuthMixin, QObject): self._leftVoid = 0 self._rightVoid = 0 + self.register_callbacks() + self.destroyed.connect(self.unregister_callbacks) + self._fwd_swap_updatetx_timer = QTimer(self) self._fwd_swap_updatetx_timer.setSingleShot(True) # self._fwd_swap_updatetx_timer.setInterval(500) self._fwd_swap_updatetx_timer.timeout.connect(self.fwd_swap_updatetx) - walletChanged = pyqtSignal() @pyqtProperty(QEWallet, notify=walletChanged) def wallet(self): @@ -281,6 +284,14 @@ class QESwapHelper(AuthMixin, QObject): self._tx = None self.valid = False + @qt_event_listener + def on_event_fee_histogram(self, *args): + self.swap_slider_moved() + + @qt_event_listener + def on_event_fee(self, *args): + self.swap_slider_moved() + def swap_slider_moved(self): if not self._service_available: return diff --git a/electrum/gui/qt/swap_dialog.py b/electrum/gui/qt/swap_dialog.py index 4b8902843..5966e029e 100644 --- a/electrum/gui/qt/swap_dialog.py +++ b/electrum/gui/qt/swap_dialog.py @@ -12,6 +12,7 @@ from electrum.gui import messages from . import util from .util import (WindowModalDialog, Buttons, OkButton, CancelButton, EnterButton, ColorScheme, WWLabel, read_QIcon, IconLabel, char_width_in_lineedit) +from .util import qt_event_listener, QtEventListener from .amountedit import BTCAmountEdit from .fee_slider import FeeSlider, FeeComboBox from .my_treeview import create_toolbar_with_menu @@ -27,7 +28,7 @@ Do you want to continue? """ -class SwapDialog(WindowModalDialog): +class SwapDialog(WindowModalDialog, QtEventListener): tx: Optional[PartialTransaction] @@ -103,6 +104,21 @@ class SwapDialog(WindowModalDialog): self.update() self.needs_tx_update = True self.window.gui_object.timer.timeout.connect(self.timer_actions) + self.register_callbacks() + + def closeEvent(self, event): + self.unregister_callbacks() + event.accept() + + @qt_event_listener + def on_event_fee_histogram(self, *args): + self.on_send_edited() + self.on_recv_edited() + + @qt_event_listener + def on_event_fee(self, *args): + self.on_send_edited() + self.on_recv_edited() def timer_actions(self): if self.needs_tx_update: