diff --git a/src/qt/walletcontroller.cpp b/src/qt/walletcontroller.cpp index 935727806bc7..eacb3ffc4832 100644 --- a/src/qt/walletcontroller.cpp +++ b/src/qt/walletcontroller.cpp @@ -78,14 +78,6 @@ std::map WalletController::listWalletDir() const return wallets; } -void WalletController::removeWallet(WalletModel* wallet_model) -{ - // Once the wallet is successfully removed from the node, the model will emit the 'WalletModel::unload' signal. - // This signal is already connected and will complete the removal of the view from the GUI. - // Look at 'WalletController::getOrCreateWallet' for the signal connection. - wallet_model->wallet().remove(); -} - void WalletController::closeWallet(WalletModel* wallet_model, QWidget* parent) { QMessageBox box(parent); @@ -96,7 +88,10 @@ void WalletController::closeWallet(WalletModel* wallet_model, QWidget* parent) box.setDefaultButton(QMessageBox::Yes); if (box.exec() != QMessageBox::Yes) return; - removeWallet(wallet_model); + // First remove wallet from node. + wallet_model->wallet().remove(); + // Now release the model. + removeAndDeleteWallet(wallet_model); } void WalletController::closeAllWallets(QWidget* parent) @@ -109,8 +104,11 @@ void WalletController::closeAllWallets(QWidget* parent) QMutexLocker locker(&m_mutex); for (WalletModel* wallet_model : m_wallets) { - removeWallet(wallet_model); + wallet_model->wallet().remove(); + Q_EMIT walletRemoved(wallet_model); + delete wallet_model; } + m_wallets.clear(); } WalletModel* WalletController::getOrCreateWallet(std::unique_ptr wallet) diff --git a/src/qt/walletcontroller.h b/src/qt/walletcontroller.h index 0546c7f9ebd1..ccb7dbc62d51 100644 --- a/src/qt/walletcontroller.h +++ b/src/qt/walletcontroller.h @@ -79,9 +79,6 @@ class WalletController : public QObject std::unique_ptr m_handler_load_wallet; friend class WalletControllerActivity; - - //! Starts the wallet closure procedure - void removeWallet(WalletModel* wallet_model); }; class WalletControllerActivity : public QObject