Commit graph

395 commits

Author SHA1 Message Date
Byron Hambly
f3518dd2fa Merge 7446cb186c into merged_master (Bitcoin PR bitcoin-core/gui#719) 2025-06-30 15:39:33 +02:00
Byron Hambly
d5c13168a6 Merge 27dcc07c08 into merged_master (Bitcoin PR bitcoin/bitcoin#26699) 2025-04-12 15:13:11 +02:00
Byron Hambly
b3f2892ec3 Merge bc49a477de into merged_master (Bitcoin PR bitcoin-core/gui#724) 2025-04-12 11:49:36 +02:00
Byron Hambly
2cbfb9f3ff Merge ff26406b2b into merged_master (Bitcoin PR bitcoin-core/gui#693) 2025-04-11 22:43:34 +02:00
Byron Hambly
9fdd02a17b Merge 27772d8009 into merged_master (Bitcoin PR bitcoin/bitcoin#26889) 2025-04-07 08:11:43 +02:00
Byron Hambly
8e72a0ff76 Merge 2ccd7be26f into merged_master (Bitcoin PR bitcoin-core/gui#653) 2025-04-05 12:44:39 +02:00
Byron Hambly
0115c08634 Merge b7f6a89a3e into merged_master (Bitcoin PR bitcoin-core/gui#686) 2025-04-03 08:42:10 +02:00
Byron Hambly
b4405ba453 Merge e9262ea32a into merged_master (Bitcoin PR bitcoin/bitcoin#26750) 2025-03-31 16:37:52 +02:00
Byron Hambly
7c5f4914fb
Merge f37bd15d47 into merged_master (Bitcoin PR bitcoin/bitcoin#25685)
FIXME introduces a new regression test to reproduce the issue commented
out in the confidential transaction functional test
2025-02-27 09:55:45 +02:00
Byron Hambly
8499b13762
lint: fix lint issues 2024-12-03 14:02:33 +02:00
Byron Hambly
54b236050d Merge e9035f867a into merged_master (Bitcoin PR bitcoin/bitcoin#25717)
The new minchainwork test was modified to use bitcoin regtest instead of
elements, which required a few changes and a FIXME.
2024-11-22 14:26:38 +02:00
Byron Hambly
817dc4879a Merge 6d4889a694 into merged_master (Bitcoin PR bitcoin-core/gui#598) 2024-11-02 16:41:51 +02:00
James Dorfman
c6fee1dac3 Merge 38c63e3683 into merged_master (Bitcoin PR bitcoin/bitcoin#25338) 2024-09-10 18:55:20 +00:00
James Dorfman
149f9f27bd Merge 9ef180a0ab into merged_master (Bitcoin PR bitcoin-core/gui#608) 2024-09-10 00:36:47 +00:00
James Dorfman
8aebedf3b9 Merge b9ef5a10e2 into merged_master (Bitcoin PR bitcoin-core/gui#609) 2024-09-06 18:10:18 +00:00
James Dorfman
c831de4f54 Merge 72477ebb11 into merged_master (Bitcoin PR bitcoin-core/gui#556)
Please test this commit by manually launching the elements QT gui and
making sure that all the units are displayed properly in elements
2024-07-31 23:59:08 +00:00
Byron Hambly
ec293ef76f Merge aece566249 into merged_master (Bitcoin PR bitcoin-core/gui#555)
This merge had a conflict in the send coins dialog, so it should be
confirmed during review that it still works correctly.
2023-10-16 10:54:11 +00:00
Hennadii Stepanov
7446cb186c
Merge bitcoin-core/gui#719: Remove confusing "Dust" label from coincontrol / sendcoins dialog
a582b4141f gui: send, left alignment for "bytes" and "change" label (furszy)
210ef1e980 qt: remove confusing "Dust" label from coincontrol / sendcoins dialog (Sebastian Falbesoner)

Pull request description:

  In contrast to to all other labels on the coin selection dialog, the displayed dust information has nothing to do with the selected coins. All that this label shows is whether at least one of the _outputs_ qualify as dust, but the outputs are set in a different dialog. (Even worse, the dust check is currently simply wrong because it only looks at an output's nValue and just assumes a P2PKH script size.)

  As the label clearly doesn't help the user and is, quite the contrary, rather increasing confusion/misguidance, it seems sensible to remove it. The label from the sendcoins dialog is also removed with the same rationale. Additionally, the "bytes" and "change" labels are aligned to the left (second commit).

  Closes https://github.com/bitcoin-core/gui/issues/699.

ACKs for top commit:
  furszy:
    ACK a582b41
  hebasto:
    Looks good. ACK a582b4141f.

Tree-SHA512: ebc00b68bdeab69f6ab643e4b89301a7e3d04a8a4027b50813314ddddb1387bc97a83313851e375dfbce97751c234686c82af7f4e55fa5ef29f4fed4e8fc11d9
2023-07-04 16:03:30 +01:00
Sebastian Falbesoner
210ef1e980 qt: remove confusing "Dust" label from coincontrol / sendcoins dialog
In contrast to to all other labels on the coin selection dialog, the
displayed dust information has nothing to do with the selected coins.
All that this label shows is whether at least one of the _outputs_
qualify as dust, but the outputs are set in a different dialog.
(Even worse, the dust check is currently simply wrong because it only
looks at an output's nValue and just assumes a P2PKH script size.)

As the label clearly doesn't help the user and is, quite the contrary,
rather increasing confusion/misguidance, it seems sensible to remove it.

Also, remove the label from the sendcoins dialog with the same rationale.
2023-07-03 18:06:48 +02:00
Byron Hambly
2d596f1fe1 Merge 8c9268c4bf into merged_master (Elements PR #1223) 2023-07-03 12:06:08 +00:00
Byron Hambly
9baaa43e40 Merge 63d79dda82 into merged_master (Elements PR #1222) 2023-07-03 11:57:46 +00:00
Byron Hambly
0f9bdbb1f5 Merge 1695d6661b into merged_master (Bitcoin PR bitcoin-core/gui#509) 2023-06-30 16:55:02 +00:00
Byron Hambly
4988afcbc2 Merge 3ace3a17c9 into merged_master (Bitcoin PR bitcoin/bitcoin#20744) 2023-06-30 07:38:29 +00:00
Byron Hambly
6bd5dfb3bd Merge d87a37a4ab into merged_master (Bitcoin PR bitcoin/bitcoin#24167) 2023-06-28 16:52:04 +00:00
Byron Hambly
d80c10ead4 Merge 16781e1bc9 into merged_master (Bitcoin PR bitcoin-core/gui#517) 2023-06-19 10:20:17 +00:00
Byron Hambly
7878ba47b9 Merge c561f2f06e into merged_master (Bitcoin PR bitcoin/bitcoin#23497) 2023-06-19 09:28:31 +00:00
Byron Hambly
ab473ae094 Merge 2e01b69860 into merged_master (Bitcoin PR bitcoin-core/gui#441) 2023-06-15 14:25:29 +00:00
Byron Hambly
47626b5a64 Merge 623745ca74 into merged_master (Bitcoin PR bitcoin/bitcoin#23912) 2023-06-14 15:44:11 +00:00
Byron Hambly
dd0a533f32 Merge 81e7748bc1 into merged_master (Bitcoin PR bitcoin-core/gui#336) 2023-04-28 11:53:35 +00:00
Byron Hambly
7fb3c4951b Merge 2161a05855 into merged_master (Bitcoin PR bitcoin-core/gui#420) 2023-04-21 08:34:00 +00:00
furszy
68eed5df86
test,gui: add coverage for PSBT creation on legacy watch-only wallets 2023-04-03 17:23:43 -03:00
furszy
dc1cc1c359
gui: bugfix, getAvailableBalance skips selected coins
The previous behavior for getAvailableBalance when coin control
has selected coins was to return the sum of them. Instead, we
are currently returning the wallet's available total balance minus
the selected coins total amount.

This turns into a GUI-only issue for the "use available balance"
button when the user manually select coins in the send screen.

Reason:
We missed to update the GetAvailableBalance function to include
the coin control selected coins on #25685.

Context:
Since #25685 we skip the selected coins inside `AvailableCoins`,
the reason is that there is no need to traverse the wallet's
txes map just to get coins that can directly be fetched by
their id.
2023-04-03 17:23:42 -03:00
Luke Dashjr
6ae8a24009
GUI: Send: Make feerates translatable 2023-03-31 12:22:21 +01:00
Luke Dashjr
bd42f5e1cd
Bugfix: GUI: Send/PSBT: Correct virtual size unit and make translatable 2023-03-31 12:22:16 +01:00
Luke Dashjr
170f3126f2
GUI: Use translated external signer errors for messagebox text 2023-03-31 12:22:05 +01:00
Luke Dashjr
96989599d6
GUI: Make messages for copying unsigned PSBTs translatable 2023-03-31 12:22:00 +01:00
Hennadii Stepanov
ff26406b2b
Merge bitcoin-core/gui#693: Fix segfault when shutdown during wallet open
9a1d73fdff Fix segfault when shutdown during wallet open (John Moffett)

Pull request description:

  Fixes #689

  ## Summary

  If you open a wallet and send a shutdown signal during that process, you'll get a segfault when the wallet finishes opening. That's because the `WalletController` object gets deleted manually in bitcoin.cpp during shutdown, but copies of the pointer (and pointers to child objects) are dangling in various places and are accessed in queued events after the deletion.

  ## Details

  The issue in #689 is caused by the following sequence of events:

  1. Wallet open modal dialog is shown and worker thread does the actual work.
  2. Every 200ms, the main event loop checks to see if a shutdown has been requested, but only if a modal is not being shown.
  3. Request a shutdown while the modal window is shown.
  4. The wallet open process completes, the modal window is dismissed, and various `finish` signals are sent.
  5. During handling of one of the `finish` signals, `qApp->processEvents()` is [called](e9262ea32a/src/qt/sendcoinsdialog.cpp (L603)), which causes the main event loop to detect the shutdown (now that the modal window has been dismissed). The `WalletController` and all the `WalletModel`s are [deleted](65de8eeeca/src/qt/bitcoin.cpp (L394-L401)).
  6. Control returns to the `finish` method, which eventually tries to send a [signal](e9262ea32a/src/qt/sendcoinsdialog.cpp (L167)) from a wallet model, but it's been deleted already (and the signal is sent from a now-[dangling](d8bdee0fc8/src/qt/walletview.cpp (L65)) pointer).

  The simplest fix for that is to change the `qApp->processEvents()` into a `QueuedConnection` call. (The `qApp->processEvents() was a [workaround](https://github.com/bitcoin/bitcoin/pull/593#issuecomment-3050699) to get the GUI to scroll to the last item in a list that just got added, and this is just a safer way of doing that).

  However, once that segfault is fixed, another segfault occurs due to some queued wallet events happening after the wallet controller object is deleted here:

  65de8eeeca/src/qt/bitcoin.cpp (L394-L401)

  Since `m_wallet_controller` is a copy of that pointer in `bitcoingui.cpp`, it's now dangling and `if(null)` checks won't work correctly. For instance, this line:

  65de8eeeca/src/qt/bitcoingui.cpp (L413)

  sets up a `QueuedConnection` to `setCurrentWallet`, but by the time control reaches that method (one event cycle after shutdown deleted `m_wallet_controller` in `bitcoin.cpp`), the underlying objects have been destroyed (but the pointers are still dangling).

  Ideally, we'd use a `QPointer` or `std::shared_ptr / std::weak_ptr`s for these, but the changes would be more involved.

  This is a minimal fix for the issues. Just set `m_wallet_controller` to `nullptr` in `bitcoingui.cpp`, check its value in a couple places, and avoid a use of `qApp->processEvents`.

ACKs for top commit:
  hebasto:
    ACK 9a1d73fdff, I have reviewed the code and it looks OK.
  furszy:
    ACK 9a1d73fdff

Tree-SHA512: a1b94676eb2fcb7606e68fab443b1565b4122aab93c35382b561842a049f4b43fecc459535370d67a64d6ebc4bcec0ebcda981fff633ebd41bdba6f7093ea540
2023-03-27 15:53:42 +01:00
Andrea Bonel
7a98c29c6e
Elements-qt: Use available balance from the currently selected asset 2023-03-17 13:44:56 +02:00
Andrea Bonel
cfb7565520 Elements-qt: Avoid mixing assets when using all the available balance 2023-03-15 09:37:55 -03:00
Andrew Chow
27772d8009
Merge bitcoin/bitcoin#26889: refactor: wallet, remove global 'ArgsManager' dependency
52f4d567d6 refactor: remove <util/system.h> include from wallet.h (furszy)
6c9b342c30 refactor: wallet, remove global 'ArgsManager' access (furszy)
d8f5fc4462 wallet: set '-walletnotify' script instead of access global args manager (furszy)
3477a28dd3 wallet: set keypool_size instead of access global args manager (furszy)

Pull request description:

  Structurally, the wallet class shouldn't access the global `ArgsManager` class, its internal behavior shouldn't be coupled to a global command line args parsing object.

  So this PR migrates the only two places where we depend on it: (1) the keypool size, and (2) the "-walletnotify" script. And cleans up the, now unneeded, wallet `ArgsManager` ref member.

  Extra note:
  In the process of removing the args ref member, discovered and fixed files that were invalidly depending on the wallet header including `util/system.h`.

ACKs for top commit:
  achow101:
    ACK 52f4d567d6
  TheCharlatan:
    Re-ACK 52f4d567d6
  hebasto:
    re-ACK 52f4d567d6

Tree-SHA512: 0cffd99b4dd4864bf618aa45aeaabbef2b6441d27b6dbb03489c4e013330877682ff17b418d07aa25fbe1040bdf2c67d7559bdeb84128c5437bf0e6247719016
2023-02-17 12:47:52 -05:00
furszy
52f4d567d6
refactor: remove <util/system.h> include from wallet.h
Since we no longer store a ref to the global `ArgsManager`
inside the wallet, we can move the util/system.h
include to the cpp.

This dependency removal opened a can of worms, as few
other places were, invalidly, depending on the wallet's
header including it.
2023-02-15 15:49:45 -03:00
Hennadii Stepanov
2ccd7be26f
Merge bitcoin-core/gui#653: Show watchonly balance only for Legacy wallets
fdb8dc8a5a gui: Show watchonly balance only for Legacy wallets (Andrew Chow)

Pull request description:

  Descriptor wallets do not have a watchonly balance as wallets are designated watchonly or not. Thus we should not be displaying the empty watchonly balance for descriptor wallets.

  The result is that instead of the send page showing "Watch-only balance: 0.00000000 BTC" for watchonly descriptor wallets, we see the actual balance as "Balance: 10.00000000 BTC"

ACKs for top commit:
  johnny9:
    tACK fdb8dc8a5a
  furszy:
    ACK fdb8dc8a
  hebasto:
    ACK fdb8dc8a5a

Tree-SHA512: e5c0703a62d25c881c8dadfb9cffd482791f3d437a4ec5ae0088ce1a2069c2455ad6d3ec6c95a4404a3b55fbd727f92694529c35052236951553ca90c4ed31b5
2023-02-03 19:18:30 +00:00
Hennadii Stepanov
b7f6a89a3e
Merge bitcoin-core/gui#686: clang-tidy: Force checks for headers in src/qt
7b7cd11244 clang-tidy, qt: Force checks for headers in `src/qt` (Hennadii Stepanov)
69eacf2c5e clang-tidy, qt: Fix `modernize-use-default-member-init` in headers (Hennadii Stepanov)

Pull request description:

  This PR split from bitcoin/bitcoin#26705 and contains only changes in `src/qt`.

  Effectively, it fixes the clang-tidy's `modernize-use-default-member-init` errors, and forces clang-tidy checks for all headers in the `src/qt` directory.

ACKs for top commit:
  jarolrod:
    ACK 7b7cd11244

Tree-SHA512: 79525bb0f31ae7cad88c781e55091a21467c0485ddc1ed03ad62e051480fda3b3710619ea11af480437edba3c6e038f7c40edc6b373e3a37408c006d11b34686
2023-01-17 09:54:56 +00:00
John Moffett
9a1d73fdff Fix segfault when shutdown during wallet open
If you open a wallet and send a shutdown signal during
that process, the GUI will segfault due to some queued
wallet events happening after the wallet controller
is deleted. This is a minimal fix for those issues.
2023-01-08 19:31:56 -05:00
Hennadii Stepanov
306ccd4927
scripted-diff: Bump copyright headers
-BEGIN VERIFY SCRIPT-
./contrib/devtools/copyright_header.py update ./
-END VERIFY SCRIPT-

Commits of previous years:
- 2021: f47dda2c58
- 2020: fa0074e2d8
- 2019: aaaaad6ac9
2022-12-24 23:49:50 +00:00
Hennadii Stepanov
69eacf2c5e
clang-tidy, qt: Fix modernize-use-default-member-init in headers
See https://clang.llvm.org/extra/clang-tidy/checks/modernize/use-default-member-init.html
2022-12-16 11:58:38 +00:00
furszy
94c0766b0c
wallet: skip available coins fetch if "other inputs" are disallowed
no need to waste resources calculating the wallet available coins if
they are not going to be used.

The 'm_allow_other_inputs=true` default value change is to correct
an ugly misleading behavior:

The tx creation process was having a workaround patch to automatically
fall back to select coins from the wallet if `m_allow_other_inputs=false`
(previous default value) and no manual inputs were selected.

This could be seen in master in flows like `sendtoaddress`, `sendmany`
and even the GUI, where the `m_allow_other_inputs` value isn't customized
and the wallet still selects and adds coins to the tx internally.
2022-10-26 15:47:51 -03:00
Andrea Bonel
60b913e341 Elements-qt: Correctly display the amount in the sender's wallet after using Send button 2022-08-31 19:12:50 -03:00
Pieter Wuille
3add234546 ui: show header pre-synchronization progress 2022-08-29 08:10:35 -04:00
Hennadii Stepanov
6d4889a694
Merge bitcoin-core/gui#598: Avoid recalculating the wallet balance - use model cache
4584d300a4 GUI: remove now unneeded 'm_balances' field from overviewpage (furszy)
050e8b1391 GUI: 'getAvailableBalance', use cached balance if the user did not select UTXO manually (furszy)
96e3264a82 GUI: use cached balance in overviewpage and sendcoinsdialog (furszy)
321335bf02 GUI: add getter for WalletModel::m_cached_balances field (furszy)
e62958dc81 GUI: sendCoinsDialog, remove duplicate wallet().getBalances() call (furszy)

Pull request description:

  As per the title says, we are recalculating the entire wallet balance on different situations calling to `wallet().getBalances()`, when should instead make use of the wallet model cached balance.

  This has the benefits of (1) not spending resources calculating a balance that we already have cached, and (2) avoid blocking the main thread for a long time, in case of big wallets, walking through the entire wallet's tx map more than what it's really needed.

  Changes:

  1) Fix: `SendCoinsDialog` was calling `wallet().getBalances()` twice during `setModel`.
  2) Use the cached balance if the user did not select any UTXO manually inside the wallet model `getAvailableBalance` call.

  -----------------------
  As an extra note, this work born in [#25005](https://github.com/bitcoin/bitcoin/pull/25005) but grew out of scope of it.

ACKs for top commit:
  jarolrod:
    ACK 4584d300a4
  hebasto:
    re-ACK 4584d300a4, only suggested changes and commit message formatting since my [recent](https://github.com/bitcoin-core/gui/pull/598#pullrequestreview-1071268192) review.

Tree-SHA512: 6633ce7f9a82a3e46e75aa7295df46c80a4cd4a9f3305427af203c9bc8670573fa8a1927f14a279260c488cc975a08d238faba2e9751588086fea1dcf8ea2b28
2022-08-15 19:38:17 +01:00