diff --git a/src/qt/bitcoingui.cpp b/src/qt/bitcoingui.cpp --- a/src/qt/bitcoingui.cpp +++ b/src/qt/bitcoingui.cpp @@ -446,12 +446,23 @@ &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( @@ -485,6 +496,11 @@ &QObject::deleteLater); }); } + if (wallets.empty()) { + QAction *action = m_open_wallet_action->menu()->addAction( + tr("No wallets available")); + action->setEnabled(false); + } }); } #endif // ENABLE_WALLET