diff options
| author | Sjors Provoost <[email protected]> | 2019-09-23 19:13:55 +0200 |
|---|---|---|
| committer | Sjors Provoost <[email protected]> | 2019-11-13 18:54:39 +0100 |
| commit | 40537f090907f81ba885edb7dff1558382976912 (patch) | |
| tree | fbe1a0e7974afb8aeb9ce13dede8b1cf3b055271 /src | |
| parent | Merge #17405: wallet: Remove unused boost::this_thread::interruption_point (diff) | |
| download | discoin-40537f090907f81ba885edb7dff1558382976912.tar.xz discoin-40537f090907f81ba885edb7dff1558382976912.zip | |
[wallet] ListCoins: include watch-only for wallets without private keys
This makes them available in GUI coin selection.
Diffstat (limited to 'src')
| -rw-r--r-- | src/wallet/wallet.cpp | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/src/wallet/wallet.cpp b/src/wallet/wallet.cpp index 2f2931cef..058b70d85 100644 --- a/src/wallet/wallet.cpp +++ b/src/wallet/wallet.cpp @@ -2160,7 +2160,7 @@ std::map<CTxDestination, std::vector<COutput>> CWallet::ListCoins(interfaces::Ch for (const COutput& coin : availableCoins) { CTxDestination address; - if (coin.fSpendable && + if ((coin.fSpendable || (IsWalletFlagSet(WALLET_FLAG_DISABLE_PRIVATE_KEYS) && coin.fSolvable)) && ExtractDestination(FindNonChangeParentOutput(*coin.tx->tx, coin.i).scriptPubKey, address)) { result[address].emplace_back(std::move(coin)); } @@ -2168,12 +2168,16 @@ std::map<CTxDestination, std::vector<COutput>> CWallet::ListCoins(interfaces::Ch std::vector<COutPoint> lockedCoins; ListLockedCoins(lockedCoins); + // Include watch-only for wallets without private keys + const bool include_watch_only = IsWalletFlagSet(WALLET_FLAG_DISABLE_PRIVATE_KEYS); + const isminetype is_mine_filter = include_watch_only ? ISMINE_WATCH_ONLY : ISMINE_SPENDABLE; for (const COutPoint& output : lockedCoins) { auto it = mapWallet.find(output.hash); if (it != mapWallet.end()) { int depth = it->second.GetDepthInMainChain(); if (depth >= 0 && output.n < it->second.tx->vout.size() && - IsMine(it->second.tx->vout[output.n]) == ISMINE_SPENDABLE) { + IsMine(it->second.tx->vout[output.n]) == is_mine_filter + ) { CTxDestination address; if (ExtractDestination(FindNonChangeParentOutput(*it->second.tx, output.n).scriptPubKey, address)) { result[address].emplace_back( |