Use CCoinControl selection in CWallet::FundTransaction
This commit is contained in:
parent
87d6562299
commit
d6cc6a1830
3 changed files with 5 additions and 15 deletions
|
@ -38,10 +38,9 @@ public:
|
||||||
return (setSelected.size() > 0);
|
return (setSelected.size() > 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
bool IsSelected(const uint256& hash, unsigned int n) const
|
bool IsSelected(const COutPoint& output) const
|
||||||
{
|
{
|
||||||
COutPoint outpt(hash, n);
|
return (setSelected.count(output) > 0);
|
||||||
return (setSelected.count(outpt) > 0);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void Select(const COutPoint& output)
|
void Select(const COutPoint& output)
|
||||||
|
|
|
@ -796,7 +796,7 @@ void CoinControlDialog::updateView()
|
||||||
}
|
}
|
||||||
|
|
||||||
// set checkbox
|
// set checkbox
|
||||||
if (coinControl->IsSelected(txhash, out.i))
|
if (coinControl->IsSelected(COutPoint(txhash, out.i)))
|
||||||
itemOutput->setCheckState(COLUMN_CHECKBOX, Qt::Checked);
|
itemOutput->setCheckState(COLUMN_CHECKBOX, Qt::Checked);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1669,7 +1669,7 @@ void CWallet::AvailableCoins(vector<COutput>& vCoins, bool fOnlyConfirmed, const
|
||||||
isminetype mine = IsMine(pcoin->vout[i]);
|
isminetype mine = IsMine(pcoin->vout[i]);
|
||||||
if (!(IsSpent(wtxid, i)) && mine != ISMINE_NO &&
|
if (!(IsSpent(wtxid, i)) && mine != ISMINE_NO &&
|
||||||
!IsLockedCoin((*it).first, i) && (pcoin->vout[i].nValue > 0 || fIncludeZeroValue) &&
|
!IsLockedCoin((*it).first, i) && (pcoin->vout[i].nValue > 0 || fIncludeZeroValue) &&
|
||||||
(!coinControl || !coinControl->HasSelected() || coinControl->fAllowOtherInputs || coinControl->IsSelected((*it).first, i)))
|
(!coinControl || !coinControl->HasSelected() || coinControl->fAllowOtherInputs || coinControl->IsSelected(COutPoint((*it).first, i))))
|
||||||
vCoins.push_back(COutput(pcoin, i, nDepth,
|
vCoins.push_back(COutput(pcoin, i, nDepth,
|
||||||
((mine & ISMINE_SPENDABLE) != ISMINE_NO) ||
|
((mine & ISMINE_SPENDABLE) != ISMINE_NO) ||
|
||||||
(coinControl && coinControl->fAllowWatchOnly && (mine & ISMINE_WATCH_SOLVABLE) != ISMINE_NO)));
|
(coinControl && coinControl->fAllowWatchOnly && (mine & ISMINE_WATCH_SOLVABLE) != ISMINE_NO)));
|
||||||
|
@ -1927,16 +1927,7 @@ bool CWallet::FundTransaction(CMutableTransaction& tx, CAmount &nFeeRet, int& nC
|
||||||
// Add new txins (keeping original txin scriptSig/order)
|
// Add new txins (keeping original txin scriptSig/order)
|
||||||
BOOST_FOREACH(const CTxIn& txin, wtx.vin)
|
BOOST_FOREACH(const CTxIn& txin, wtx.vin)
|
||||||
{
|
{
|
||||||
bool found = false;
|
if (!coinControl.IsSelected(txin.prevout))
|
||||||
BOOST_FOREACH(const CTxIn& origTxIn, tx.vin)
|
|
||||||
{
|
|
||||||
if (txin.prevout.hash == origTxIn.prevout.hash && txin.prevout.n == origTxIn.prevout.n)
|
|
||||||
{
|
|
||||||
found = true;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (!found)
|
|
||||||
tx.vin.push_back(txin);
|
tx.vin.push_back(txin);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue