aboutsummaryrefslogtreecommitdiff
path: root/src/qt
diff options
context:
space:
mode:
authorHennadii Stepanov <32963518+hebasto@users.noreply.github.com>2023-07-04 16:41:42 +0100
committerHennadii Stepanov <32963518+hebasto@users.noreply.github.com>2023-07-04 16:45:54 +0100
commitc71a96c431d05f795b8b9426987650d6fc9f217a (patch)
tree96b44993bef75d24b2701409bde138acbc68e109 /src/qt
parent7446cb186c4f32b2718d7cb486f83952f3cf166d (diff)
parent99c0eb9701e71f16aa360a420b7e4851d5b92510 (diff)
Merge bitcoin-core/gui#696: Switch RPCConsole wallet selection to the one most recently opened/restored/created
99c0eb9701e71f16aa360a420b7e4851d5b92510 Fix RPCConsole wallet selection (John Moffett) Pull request description: If a user opens multiple wallets in the GUI from the menu bar, the last one opened is the active one in the main window. However, For the RPC Console window, the _first_ one opened is active. This can be confusing, as wallet RPC commands may be sent to a wallet the user didn't intend. This PR makes the RPC Console switch to the wallet just opened / restored / created from the menu bar, which is how the main GUI now works. Similar to https://github.com/bitcoin-core/gui/pull/665 and specifically requested [in a comment](https://github.com/bitcoin-core/gui/pull/665#issuecomment-1270003660). ACKs for top commit: luke-jr: utACK 99c0eb9701e71f16aa360a420b7e4851d5b92510 hebasto: ACK 99c0eb9701e71f16aa360a420b7e4851d5b92510, tested on Ubuntu 23.04. Tree-SHA512: d5e5acdaa114130ad4d27fd3f25393bc8d02d92b5001cd39352601d04283cdad3bd62c4da6d369c69764e3b188e9cd3e83152c00b09bd42966082ad09037c328
Diffstat (limited to 'src/qt')
-rw-r--r--src/qt/bitcoingui.cpp3
-rw-r--r--src/qt/rpcconsole.cpp6
-rw-r--r--src/qt/rpcconsole.h4
3 files changed, 13 insertions, 0 deletions
diff --git a/src/qt/bitcoingui.cpp b/src/qt/bitcoingui.cpp
index f201d8fa01..fd329faf18 100644
--- a/src/qt/bitcoingui.cpp
+++ b/src/qt/bitcoingui.cpp
@@ -412,6 +412,7 @@ void BitcoinGUI::createActions()
connect(action, &QAction::triggered, [this, path] {
auto activity = new OpenWalletActivity(m_wallet_controller, this);
connect(activity, &OpenWalletActivity::opened, this, &BitcoinGUI::setCurrentWallet, Qt::QueuedConnection);
+ connect(activity, &OpenWalletActivity::opened, rpcConsole, &RPCConsole::setCurrentWallet, Qt::QueuedConnection);
activity->open(path);
});
}
@@ -441,6 +442,7 @@ void BitcoinGUI::createActions()
auto activity = new RestoreWalletActivity(m_wallet_controller, this);
connect(activity, &RestoreWalletActivity::restored, this, &BitcoinGUI::setCurrentWallet, Qt::QueuedConnection);
+ connect(activity, &RestoreWalletActivity::restored, rpcConsole, &RPCConsole::setCurrentWallet, Qt::QueuedConnection);
auto backup_file_path = fs::PathFromString(backup_file.toStdString());
activity->restore(backup_file_path, wallet_name.toStdString());
@@ -451,6 +453,7 @@ void BitcoinGUI::createActions()
connect(m_create_wallet_action, &QAction::triggered, [this] {
auto activity = new CreateWalletActivity(m_wallet_controller, this);
connect(activity, &CreateWalletActivity::created, this, &BitcoinGUI::setCurrentWallet);
+ connect(activity, &CreateWalletActivity::created, rpcConsole, &RPCConsole::setCurrentWallet);
activity->create();
});
connect(m_close_all_wallets_action, &QAction::triggered, [this] {
diff --git a/src/qt/rpcconsole.cpp b/src/qt/rpcconsole.cpp
index 90aae0219e..cb4ecfb6fb 100644
--- a/src/qt/rpcconsole.cpp
+++ b/src/qt/rpcconsole.cpp
@@ -797,6 +797,12 @@ void RPCConsole::removeWallet(WalletModel * const walletModel)
ui->WalletSelectorLabel->setVisible(false);
}
}
+
+void RPCConsole::setCurrentWallet(WalletModel* const wallet_model)
+{
+ QVariant data = QVariant::fromValue(wallet_model);
+ ui->WalletSelector->setCurrentIndex(ui->WalletSelector->findData(data));
+}
#endif
static QString categoryClass(int category)
diff --git a/src/qt/rpcconsole.h b/src/qt/rpcconsole.h
index 32a7520491..65eef7fbba 100644
--- a/src/qt/rpcconsole.h
+++ b/src/qt/rpcconsole.h
@@ -136,6 +136,10 @@ public Q_SLOTS:
void unbanSelectedNode();
/** set which tab has the focus (is visible) */
void setTabFocus(enum TabTypes tabType);
+#ifdef ENABLE_WALLET
+ /** Set the current (ie - active) wallet */
+ void setCurrentWallet(WalletModel* const wallet_model);
+#endif // ENABLE_WALLET
private:
struct TranslatedStrings {