From 55a2005a6bd1b329739cef4f971226d2fffd9d3d Mon Sep 17 00:00:00 2001 From: Sander van Grieken Date: Thu, 18 Jan 2024 00:25:25 +0100 Subject: [PATCH] qml: update history view after address/key delete. fixes #8782 --- electrum/gui/qml/components/History.qml | 7 +++++++ electrum/gui/qml/qeaddressdetails.py | 1 + electrum/gui/qml/qewallet.py | 4 +++- 3 files changed, 11 insertions(+), 1 deletion(-) diff --git a/electrum/gui/qml/components/History.qml b/electrum/gui/qml/components/History.qml index 7aded966f..c99be7599 100644 --- a/electrum/gui/qml/components/History.qml +++ b/electrum/gui/qml/components/History.qml @@ -150,4 +150,11 @@ Pane { listview.positionViewAtBeginning() } } + + StackView.onVisibleChanged: { + // refresh model if History becomes visible and the model is dirty. + if (StackView.visible) { + Daemon.currentWallet.historyModel.initModel(false) + } + } } diff --git a/electrum/gui/qml/qeaddressdetails.py b/electrum/gui/qml/qeaddressdetails.py index 26c9889c1..65af1e452 100644 --- a/electrum/gui/qml/qeaddressdetails.py +++ b/electrum/gui/qml/qeaddressdetails.py @@ -137,6 +137,7 @@ class QEAddressDetails(AuthMixin, QObject): assert self.canDelete try: self._wallet.wallet.delete_address(self._address) + self._wallet.historyModel.setDirty() except UserFacingException as e: self.addressDeleteFailed.emit(str(e)) return False diff --git a/electrum/gui/qml/qewallet.py b/electrum/gui/qml/qewallet.py index 2f4b5fe68..194b27fd2 100644 --- a/electrum/gui/qml/qewallet.py +++ b/electrum/gui/qml/qewallet.py @@ -196,10 +196,12 @@ class QEWallet(AuthMixin, QObject, QtEventListener): @qt_event_listener def on_event_removed_transaction(self, wallet, tx): + # NOTE: this event only triggers once, only for the first deleted tx, when for imported wallets an address + # is deleted along with multiple associated txs if wallet == self.wallet: self._logger.info(f'removed transaction {tx.txid()}') self.addressCoinModel.setDirty() - self.historyModel.initModel(True) # setDirty()? + self.historyModel.setDirty() self.balanceChanged.emit() @qt_event_listener