File tree Expand file tree Collapse file tree 3 files changed +13
-2
lines changed Expand file tree Collapse file tree 3 files changed +13
-2
lines changed Original file line number Diff line number Diff line change @@ -795,7 +795,7 @@ void SendCoinsDialog::useAvailableBalance(SendCoinsEntry* entry)
795
795
m_coin_control->fAllowWatchOnly = model->wallet ().privateKeysDisabled () && !model->wallet ().hasExternalSigner ();
796
796
797
797
// Calculate available amount to send.
798
- CAmount amount = model->wallet (). getAvailableBalance (* m_coin_control);
798
+ CAmount amount = model->getAvailableBalance (m_coin_control. get () );
799
799
for (int i = 0 ; i < ui->entries ->count (); ++i) {
800
800
SendCoinsEntry* e = qobject_cast<SendCoinsEntry*>(ui->entries ->itemAt (i)->widget ());
801
801
if (e && !e->isHidden () && e != entry) {
Original file line number Diff line number Diff line change @@ -203,7 +203,9 @@ WalletModel::SendCoinsReturn WalletModel::prepareTransaction(WalletModelTransact
203
203
return DuplicateAddress;
204
204
}
205
205
206
- CAmount nBalance = m_wallet->getAvailableBalance (coinControl);
206
+ // If no coin was manually selected, use the cached balance
207
+ // Future: can merge this call with 'createTransaction'.
208
+ CAmount nBalance = getAvailableBalance (&coinControl);
207
209
208
210
if (total > nBalance)
209
211
{
@@ -608,3 +610,8 @@ uint256 WalletModel::getLastBlockProcessed() const
608
610
{
609
611
return m_client_model ? m_client_model->getBestBlockHash () : uint256{};
610
612
}
613
+
614
+ CAmount WalletModel::getAvailableBalance (const CCoinControl* control)
615
+ {
616
+ return control && control->HasSelected () ? wallet ().getAvailableBalance (*control) : getCachedBalance ().balance ;
617
+ }
Original file line number Diff line number Diff line change @@ -160,6 +160,10 @@ class WalletModel : public QObject
160
160
// Retrieve the cached wallet balance
161
161
interfaces::WalletBalances getCachedBalance () const ;
162
162
163
+ // If coin control has selected outputs, searches the total amount inside the wallet.
164
+ // Otherwise, uses the wallet's cached available balance.
165
+ CAmount getAvailableBalance (const wallet::CCoinControl* control);
166
+
163
167
private:
164
168
std::unique_ptr<interfaces::Wallet> m_wallet;
165
169
std::unique_ptr<interfaces::Handler> m_handler_unload;
You can’t perform that action at this time.
0 commit comments