mirror of
https://github.com/bitcoin/bitcoin.git
synced 2025-11-12 15:09:59 +01:00
Notify the GUI that the keypool has changed to set the receive button
Whenever the keypool changes (new keys generated, new seed set, keypool runs out, etc.), notify the GUI that the keypool has changed. The receive button can then be enabled and disabled as necessary.
This commit is contained in:
@@ -423,6 +423,11 @@ static void NotifyWatchonlyChanged(WalletModel *walletmodel, bool fHaveWatchonly
|
||||
Q_ARG(bool, fHaveWatchonly));
|
||||
}
|
||||
|
||||
static void NotifyCanGetAddressesChanged(WalletModel* walletmodel)
|
||||
{
|
||||
QMetaObject::invokeMethod(walletmodel, "canGetAddressesChanged");
|
||||
}
|
||||
|
||||
void WalletModel::subscribeToCoreSignals()
|
||||
{
|
||||
// Connect signals to wallet
|
||||
@@ -432,6 +437,7 @@ void WalletModel::subscribeToCoreSignals()
|
||||
m_handler_transaction_changed = m_wallet->handleTransactionChanged(std::bind(NotifyTransactionChanged, this, std::placeholders::_1, std::placeholders::_2));
|
||||
m_handler_show_progress = m_wallet->handleShowProgress(std::bind(ShowProgress, this, std::placeholders::_1, std::placeholders::_2));
|
||||
m_handler_watch_only_changed = m_wallet->handleWatchOnlyChanged(std::bind(NotifyWatchonlyChanged, this, std::placeholders::_1));
|
||||
m_handler_can_get_addrs_changed = m_wallet->handleCanGetAddressesChanged(boost::bind(NotifyCanGetAddressesChanged, this));
|
||||
}
|
||||
|
||||
void WalletModel::unsubscribeFromCoreSignals()
|
||||
@@ -443,6 +449,7 @@ void WalletModel::unsubscribeFromCoreSignals()
|
||||
m_handler_transaction_changed->disconnect();
|
||||
m_handler_show_progress->disconnect();
|
||||
m_handler_watch_only_changed->disconnect();
|
||||
m_handler_can_get_addrs_changed->disconnect();
|
||||
}
|
||||
|
||||
// WalletModel::UnlockContext implementation
|
||||
@@ -573,6 +580,11 @@ bool WalletModel::privateKeysDisabled() const
|
||||
|
||||
bool WalletModel::canGetAddresses() const
|
||||
{
|
||||
// The wallet can provide a fresh address if:
|
||||
// * hdEnabled(): an HD seed is present; or
|
||||
// * it is a legacy wallet, because:
|
||||
// * !hdEnabled(): an HD seed is not present; and
|
||||
// * !IsWalletFlagSet(WALLET_FLAG_DISABLE_PRIVATE_KEYS): private keys have not been disabled (which results in hdEnabled() == true)
|
||||
return m_wallet->hdEnabled() || (!m_wallet->hdEnabled() && !m_wallet->IsWalletFlagSet(WALLET_FLAG_DISABLE_PRIVATE_KEYS));
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user