From dc1441d129f249cc0339f9af9a35ae6083b028ea Mon Sep 17 00:00:00 2001 From: Sander van Grieken Date: Fri, 3 Feb 2023 16:26:25 +0100 Subject: [PATCH] qml: make sure to keep ref to instance --- .../gui/qml/components/ChannelBackups.qml | 2 +- electrum/gui/qml/components/Channels.qml | 2 +- electrum/gui/qml/qechannellistmodel.py | 19 ++++++++++++++----- electrum/gui/qml/qemodelfilter.py | 3 +-- 4 files changed, 17 insertions(+), 9 deletions(-) diff --git a/electrum/gui/qml/components/ChannelBackups.qml b/electrum/gui/qml/components/ChannelBackups.qml index 491976d9f..496509bee 100644 --- a/electrum/gui/qml/components/ChannelBackups.qml +++ b/electrum/gui/qml/components/ChannelBackups.qml @@ -54,7 +54,7 @@ Pane { Layout.preferredWidth: parent.width Layout.fillHeight: true clip: true - model: Daemon.currentWallet.channelModel.filterModel('is_backup', true) + model: Daemon.currentWallet.channelModel.filterModelBackups() delegate: ChannelDelegate { onClicked: { diff --git a/electrum/gui/qml/components/Channels.qml b/electrum/gui/qml/components/Channels.qml index 3e04d9cc4..ea299d329 100644 --- a/electrum/gui/qml/components/Channels.qml +++ b/electrum/gui/qml/components/Channels.qml @@ -78,7 +78,7 @@ Pane { Layout.preferredWidth: parent.width Layout.fillHeight: true clip: true - model: Daemon.currentWallet.channelModel.filterModel('is_backup', false) + model: Daemon.currentWallet.channelModel.filterModelNoBackups() delegate: ChannelDelegate { onClicked: { diff --git a/electrum/gui/qml/qechannellistmodel.py b/electrum/gui/qml/qechannellistmodel.py index 6b33db057..0f03937de 100644 --- a/electrum/gui/qml/qechannellistmodel.py +++ b/electrum/gui/qml/qechannellistmodel.py @@ -169,11 +169,20 @@ class QEChannelListModel(QAbstractListModel, QtEventListener): return i = i + 1 - @pyqtSlot(str, 'QVariant', result=QEFilterProxyModel) def filterModel(self, role, match): - self._filterModel = QEFilterProxyModel(self, self) + _filterModel = QEFilterProxyModel(self, self) assert role in self._ROLE_RMAP - self._filterModel.setFilterRole(self._ROLE_RMAP[role]) - self._filterModel.setFilterValue(match) - return self._filterModel + _filterModel.setFilterRole(self._ROLE_RMAP[role]) + _filterModel.setFilterValue(match) + return _filterModel + + @pyqtSlot(result=QEFilterProxyModel) + def filterModelBackups(self): + self._fm_backups = self.filterModel('is_backup', True) + return self._fm_backups + + @pyqtSlot(result=QEFilterProxyModel) + def filterModelNoBackups(self): + self._fm_nobackups = self.filterModel('is_backup', False) + return self._fm_nobackups diff --git a/electrum/gui/qml/qemodelfilter.py b/electrum/gui/qml/qemodelfilter.py index f024bea4a..1c098009d 100644 --- a/electrum/gui/qml/qemodelfilter.py +++ b/electrum/gui/qml/qemodelfilter.py @@ -5,10 +5,9 @@ from electrum.logging import get_logger class QEFilterProxyModel(QSortFilterProxyModel): _logger = get_logger(__name__) - _filter_value = None - def __init__(self, parent_model, parent=None): super().__init__(parent) + self._filter_value = None self.setSourceModel(parent_model) countChanged = pyqtSignal()