Merge #6457: fix(qt): improve GUI responsiveness for huge wallets

a4378fc2ff fix(qt): emit dataChanged for the whole model in TransactionTableModel (UdjinM6)

Pull request description:

  ## Issue being fixed or feature implemented
  Somehow a 500k+ txes wallet is MUCH more responsive with this patch. I'm not sure if it's macos only or not though, pls test.

  ## What was done?

  ## How Has This Been Tested?
  Run a wallet with 100k+ txes in it and send a tx or try changing units.

  ## Breaking Changes

  ## Checklist:
  - [ ] I have performed a self-review of my own code
  - [ ] I have commented my code, particularly in hard-to-understand areas
  - [ ] I have added or updated relevant unit/integration/functional/e2e tests
  - [ ] I have made corresponding changes to the documentation
  - [ ] I have assigned this pull request to a milestone _(for repository code-owners and collaborators only)_

ACKs for top commit:
  knst:
    ACK a4378fc2ff
  PastaPastaPasta:
    utACK a4378fc2ff

Tree-SHA512: eb0116f99f145ee131bd4a69895c9384dc26fc113ee034a2af74a92b0770b33631455a79e5826dc004f922ac182481eb26c54255274e186a47da3796da9550a6
This commit is contained in:
pasta 2024-12-09 15:25:39 -06:00
commit babafbb1be
No known key found for this signature in database
GPG Key ID: E2F3D7916E722D38

View File

@ -314,10 +314,7 @@ void TransactionTableModel::updateAddressBook(const QString& address, const QStr
void TransactionTableModel::updateConfirmations()
{
// Blocks came in since last poll.
// Invalidate status (number of confirmations) and (possibly) description
// for all rows. Qt is smart enough to only actually request the data for the
// visible rows.
Q_EMIT dataChanged(index(0, Status), index(priv->size()-1, Status));
Q_EMIT dataChanged(QModelIndex(), QModelIndex());
}
@ -799,7 +796,7 @@ void TransactionTableModel::updateDisplayUnit()
{
// emit dataChanged to update Amount column with the current unit
updateAmountColumnTitle();
Q_EMIT dataChanged(index(0, Amount), index(priv->size()-1, Amount));
Q_EMIT dataChanged(QModelIndex(), QModelIndex());
}
void TransactionTablePriv::NotifyTransactionChanged(const uint256 &hash, ChangeType status)