From ad1c40d722133368f045c166fd760a535d69d6de Mon Sep 17 00:00:00 2001 From: Jonas Schnelli Date: Sat, 18 May 2019 13:01:40 +0200 Subject: [PATCH] Merge #15957: Show "No wallets available" in open menu instead of nothing c3ef63a52 Show loaded wallets as disabled in open menu instead of nothing (MeshCollider) Pull request description: Fixes the confusing behavior reported in #15952 ![image](https://user-images.githubusercontent.com/3211283/57224284-0e8e7f80-705d-11e9-9554-2450cc3dbb8e.png) ACKs for commit c3ef63: jonasschnelli: Tested ACK c3ef63a52f304a600fff1f9c7caa5cb804d41d43 kristapsk: tACK c3ef63a52f304a600fff1f9c7caa5cb804d41d43 Tree-SHA512: fc2b94936ca32b89e8146c65e3629785883d78660afc8838818df652a4df9185ddca6b36ebf140a7159ab42b0fa5aa72867558d4572a009be06f0831fa813d1f --- src/qt/bitcoingui.cpp | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/src/qt/bitcoingui.cpp b/src/qt/bitcoingui.cpp index 3da2fc2e45..fed92e4121 100644 --- a/src/qt/bitcoingui.cpp +++ b/src/qt/bitcoingui.cpp @@ -484,9 +484,18 @@ void BitcoinGUI::createActions() connect(openAction, &QAction::triggered, this, &BitcoinGUI::openClicked); connect(m_open_wallet_action->menu(), &QMenu::aboutToShow, [this] { m_open_wallet_action->menu()->clear(); - for (std::string path : m_wallet_controller->getWalletsAvailableToOpen()) { + std::vector available_wallets = m_wallet_controller->getWalletsAvailableToOpen(); + std::vector wallets = m_node.listWalletDir(); + for (const auto& path : wallets) { QString name = path.empty() ? QString("["+tr("default wallet")+"]") : QString::fromStdString(path); QAction* action = m_open_wallet_action->menu()->addAction(name); + + if (std::find(available_wallets.begin(), available_wallets.end(), path) == available_wallets.end()) { + // This wallet is already loaded + action->setEnabled(false); + continue; + } + connect(action, &QAction::triggered, [this, name, path] { OpenWalletActivity* activity = m_wallet_controller->openWallet(path); @@ -514,6 +523,10 @@ void BitcoinGUI::createActions() assert(invoked); }); } + if (wallets.empty()) { + QAction* action = m_open_wallet_action->menu()->addAction(tr("No wallets available")); + action->setEnabled(false); + } }); connect(m_close_wallet_action, &QAction::triggered, [this] { m_wallet_controller->closeWallet(walletFrame->currentWalletModel(), this);