diff options
| author | Jonas Schnelli <[email protected]> | 2019-03-22 11:07:35 +0100 |
|---|---|---|
| committer | Jonas Schnelli <[email protected]> | 2019-03-22 11:09:06 +0100 |
| commit | abd914ed34f12a5e7773e87e0457b04bcb7d58c4 (patch) | |
| tree | 0cb0c2217a7ba16c56c5ace775d59df73023ef8b /src | |
| parent | Merge #15625: refactor: Remove unused function (diff) | |
| parent | gui: Defer removeAndDeleteWallet when no modal widget is active (diff) | |
| download | discoin-abd914ed34f12a5e7773e87e0457b04bcb7d58c4.tar.xz discoin-abd914ed34f12a5e7773e87e0457b04bcb7d58c4.zip | |
Merge #15614: gui: Defer removeAndDeleteWallet when no modal widget is active
a10972bc0 gui: Defer removeAndDeleteWallet when no modal widget is active (João Barbosa)
Pull request description:
Fixes #15310.
Tree-SHA512: ac91a4e37020d3a854830c50c0a7a45c2c0537f80be492ec5e9ba7daf90725e912f9dcc324605493599c36180e1d3bcdfa86840b7325cba208b7e93fbe7be368
Diffstat (limited to 'src')
| -rw-r--r-- | src/qt/walletcontroller.cpp | 14 |
1 files changed, 13 insertions, 1 deletions
diff --git a/src/qt/walletcontroller.cpp b/src/qt/walletcontroller.cpp index fab86a791..019bd6582 100644 --- a/src/qt/walletcontroller.cpp +++ b/src/qt/walletcontroller.cpp @@ -9,9 +9,11 @@ #include <algorithm> +#include <QApplication> #include <QMessageBox> #include <QMutexLocker> #include <QThread> +#include <QWindow> WalletController::WalletController(interfaces::Node& node, const PlatformStyle* platform_style, OptionsModel* options_model, QObject* parent) : QObject(parent) @@ -97,7 +99,17 @@ WalletModel* WalletController::getOrCreateWallet(std::unique_ptr<interfaces::Wal m_wallets.push_back(wallet_model); connect(wallet_model, &WalletModel::unload, [this, wallet_model] { - removeAndDeleteWallet(wallet_model); + // Defer removeAndDeleteWallet when no modal widget is active. + // TODO: remove this workaround by removing usage of QDiallog::exec. + if (QApplication::activeModalWidget()) { + connect(qApp, &QApplication::focusWindowChanged, wallet_model, [this, wallet_model]() { + if (!QApplication::activeModalWidget()) { + removeAndDeleteWallet(wallet_model); + } + }, Qt::QueuedConnection); + } else { + removeAndDeleteWallet(wallet_model); + } }); // Re-emit coinsSent signal from wallet model. |