gui: Defer removeAndDeleteWallet when no modal widget is active
This commit is contained in:
parent
717fd58c4b
commit
a10972bc03
1 changed files with 13 additions and 1 deletions
|
@ -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.
|
||||
|
|
Loading…
Reference in a new issue