From c8c54a1252ba2d5ecd7fb1a6097ef5492185377a Mon Sep 17 00:00:00 2001 From: johnny9 <985648+johnny9@users.noreply.github.com> Date: Wed, 23 Jul 2025 23:50:48 -0400 Subject: [PATCH 1/4] Add missing buttonText id to EllipsisMenuToggleItem --- qml/controls/EllipsisMenuToggleItem.qml | 1 + 1 file changed, 1 insertion(+) diff --git a/qml/controls/EllipsisMenuToggleItem.qml b/qml/controls/EllipsisMenuToggleItem.qml index 71e7ec38d6..d6915e1e67 100644 --- a/qml/controls/EllipsisMenuToggleItem.qml +++ b/qml/controls/EllipsisMenuToggleItem.qml @@ -39,6 +39,7 @@ Button { anchors.centerIn: parent anchors.margins: 10 CoreText { + id: buttonText Layout.fillWidth: true Layout.alignment: Qt.AlignVCenter horizontalAlignment: Text.AlignLeft From f8eb08f30ac127173872827f729ff430025c0899 Mon Sep 17 00:00:00 2001 From: johnny9 <985648+johnny9@users.noreply.github.com> Date: Thu, 24 Jul 2025 09:14:34 -0400 Subject: [PATCH 2/4] Reset current index before clearing in SendRecipientsListModel --- qml/models/sendrecipientslistmodel.cpp | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/qml/models/sendrecipientslistmodel.cpp b/qml/models/sendrecipientslistmodel.cpp index c4c4d0a683..2a91b0a2d5 100644 --- a/qml/models/sendrecipientslistmodel.cpp +++ b/qml/models/sendrecipientslistmodel.cpp @@ -152,6 +152,12 @@ void SendRecipientsListModel::clear() void SendRecipientsListModel::clearToFront() { + if (m_current != 0) { + m_current = 0; + Q_EMIT currentRecipientChanged(); + Q_EMIT currentIndexChanged(); + } + bool count_changed = false; while (m_recipients.size() > 1) { delete m_recipients.at(1); @@ -167,10 +173,4 @@ void SendRecipientsListModel::clearToFront() m_totalAmount = m_recipients[0]->amount()->satoshi(); Q_EMIT totalAmountChanged(); } - - if (m_current != 0) { - m_current = 0; - Q_EMIT currentRecipientChanged(); - Q_EMIT currentIndexChanged(); - } } From cc500785545bc6fda5540fd26486565829c17abd Mon Sep 17 00:00:00 2001 From: johnny9 <985648+johnny9@users.noreply.github.com> Date: Thu, 24 Jul 2025 09:15:06 -0400 Subject: [PATCH 3/4] Set m_selected_wallet to empty before unloading --- qml/walletqmlcontroller.cpp | 6 +++++- qml/walletqmlcontroller.h | 1 + 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/qml/walletqmlcontroller.cpp b/qml/walletqmlcontroller.cpp index 81065a5d86..e4147c511b 100644 --- a/qml/walletqmlcontroller.cpp +++ b/qml/walletqmlcontroller.cpp @@ -16,7 +16,8 @@ WalletQmlController::WalletQmlController(interfaces::Node& node, QObject *parent) : QObject(parent) , m_node(node) - , m_selected_wallet(new WalletQmlModel(parent)) + , m_empty_wallet(new WalletQmlModel(this)) + , m_selected_wallet(m_empty_wallet) , m_worker(new QObject) , m_worker_thread(new QThread(this)) { @@ -35,6 +36,7 @@ WalletQmlController::~WalletQmlController() m_worker_thread->quit(); m_worker_thread->wait(); delete m_worker; + delete m_empty_wallet; } void WalletQmlController::setSelectedWallet(QString path) @@ -63,6 +65,8 @@ WalletQmlModel* WalletQmlController::selectedWallet() const void WalletQmlController::unloadWallets() { m_handler_load_wallet->disconnect(); + m_selected_wallet = m_empty_wallet; + Q_EMIT selectedWalletChanged(); QMutexLocker locker(&m_wallets_mutex); for (WalletQmlModel* wallet : m_wallets) { delete wallet; diff --git a/qml/walletqmlcontroller.h b/qml/walletqmlcontroller.h index 56f082e7c4..e832c8cb16 100644 --- a/qml/walletqmlcontroller.h +++ b/qml/walletqmlcontroller.h @@ -54,6 +54,7 @@ public Q_SLOTS: bool m_initialized{false}; interfaces::Node& m_node; + WalletQmlModel* m_empty_wallet; WalletQmlModel* m_selected_wallet; QObject* m_worker; QThread* m_worker_thread; From 18e008cfc8532c6bb9af6e218bd920046d57cc57 Mon Sep 17 00:00:00 2001 From: johnny9 <985648+johnny9@users.noreply.github.com> Date: Sun, 27 Jul 2025 15:41:24 -0400 Subject: [PATCH 4/4] Signal currentRecipientChanged before deleting in SendRecipientsListModel::remove --- qml/models/sendrecipientslistmodel.cpp | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/qml/models/sendrecipientslistmodel.cpp b/qml/models/sendrecipientslistmodel.cpp index 2a91b0a2d5..0754ef87ee 100644 --- a/qml/models/sendrecipientslistmodel.cpp +++ b/qml/models/sendrecipientslistmodel.cpp @@ -93,15 +93,17 @@ void SendRecipientsListModel::remove() return; } beginRemoveRows(QModelIndex(), m_current, m_current); - delete m_recipients.takeAt(m_current); - endRemoveRows(); - Q_EMIT countChanged(); - if (m_current > 0) { + int index_to_remove = m_current; setCurrentIndex(m_current - 1); + delete m_recipients.takeAt(index_to_remove); } else { + auto removed_recipient = m_recipients.takeAt(m_current); Q_EMIT currentRecipientChanged(); + delete removed_recipient; } + endRemoveRows(); + Q_EMIT countChanged(); } SendRecipient* SendRecipientsListModel::currentRecipient() const