aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJonas Schnelli <dev@jonasschnelli.ch>2019-03-22 11:07:35 +0100
committerJonas Schnelli <dev@jonasschnelli.ch>2019-03-22 11:09:06 +0100
commitabd914ed34f12a5e7773e87e0457b04bcb7d58c4 (patch)
tree0cb0c2217a7ba16c56c5ace775d59df73023ef8b
parent717fd58c4ba5c64778fa9a8bf6bbf5ae1164df3f (diff)
parenta10972bc03e1ebbe79c3edc929c91ed53b391c9a (diff)
downloadbitcoin-abd914ed34f12a5e7773e87e0457b04bcb7d58c4.tar.xz
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
-rw-r--r--src/qt/walletcontroller.cpp14
1 files changed, 13 insertions, 1 deletions
diff --git a/src/qt/walletcontroller.cpp b/src/qt/walletcontroller.cpp
index fab86a7912..019bd65823 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.