diff --git a/src/qt/walletmodel.cpp b/src/qt/walletmodel.cpp index 61172d1625..565b732bf0 100644 --- a/src/qt/walletmodel.cpp +++ b/src/qt/walletmodel.cpp @@ -613,5 +613,17 @@ uint256 WalletModel::getLastBlockProcessed() const CAmount WalletModel::getAvailableBalance(const CCoinControl* control) { - return control && control->HasSelected() ? wallet().getAvailableBalance(*control) : getCachedBalance().balance; + // No selected coins, return the cached balance + if (!control || !control->HasSelected()) { + const interfaces::WalletBalances& balances = getCachedBalance(); + CAmount available_balance = balances.balance; + // if wallet private keys are disabled, this is a watch-only wallet + // so, let's include the watch-only balance. + if (balances.have_watch_only && m_wallet->privateKeysDisabled()) { + available_balance += balances.watch_only_balance; + } + return available_balance; + } + // Fetch balance from the wallet, taking into account the selected coins + return wallet().getAvailableBalance(*control); }