Skip to content

Commit

Permalink
Merge #396: Ensure external signer option remains disabled without si…
Browse files Browse the repository at this point in the history
…gners

a9b9ca8 gui: ensure external signer option remains disabled without signers (Andrew Chow)

Pull request description:

  When no external signers are available, the option to enable external signers should always be disabled. However the encrypt wallet checkbox can erroneously re-enable the external signer checkbox. To avoid this, CreateWalletDialog now stores whether signers were available during setSigners so that future calls to external_signer_checkbox->setEnabled can account for whether signers are available.

  Fixes #395

ACKs for top commit:
  hebasto:
    ACK a9b9ca8, tested on Linux Mint 20.2 (Qt 5.12.8).
  Sjors:
    tACK a9b9ca8
  jarolrod:
    ACK a9b9ca8

Tree-SHA512: 98951bcadc23fce99a66ea2d367c44360989e888c253845a767e1f7085c594562d0f099de4130f4a078c5072aa7806294097d976ee6407291f3d3c5a4a608b44
  • Loading branch information
hebasto committed Aug 6, 2021
2 parents 7ebc4c6 + a9b9ca8 commit 03826ae
Show file tree
Hide file tree
Showing 2 changed files with 4 additions and 2 deletions.
5 changes: 3 additions & 2 deletions src/qt/createwalletdialog.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,7 @@ CreateWalletDialog::CreateWalletDialog(QWidget* parent) :
// set to true, enable it when isEncryptWalletChecked is false.
ui->disable_privkeys_checkbox->setEnabled(!checked);
#ifdef ENABLE_EXTERNAL_SIGNER
ui->external_signer_checkbox->setEnabled(!checked);
ui->external_signer_checkbox->setEnabled(m_has_signers && !checked);
#endif
// When the disable_privkeys_checkbox is disabled, uncheck it.
if (!ui->disable_privkeys_checkbox->isEnabled()) {
Expand Down Expand Up @@ -115,7 +115,8 @@ CreateWalletDialog::~CreateWalletDialog()

void CreateWalletDialog::setSigners(const std::vector<ExternalSigner>& signers)
{
if (!signers.empty()) {
m_has_signers = !signers.empty();
if (m_has_signers) {
ui->external_signer_checkbox->setEnabled(true);
ui->external_signer_checkbox->setChecked(true);
ui->encrypt_wallet_checkbox->setEnabled(false);
Expand Down
1 change: 1 addition & 0 deletions src/qt/createwalletdialog.h
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,7 @@ class CreateWalletDialog : public QDialog

private:
Ui::CreateWalletDialog *ui;
bool m_has_signers = false;
};

#endif // BITCOIN_QT_CREATEWALLETDIALOG_H

0 comments on commit 03826ae

Please sign in to comment.