dash/src/qt
Alexander Block da2f503a48 Fix largest part of GUI lockups with large wallets (#3155)
* [Qt] make sure transaction table entry gets updated after bump

* Remove unnecessary tracking of IS lock count

* Track lockedByChainLocks in TransactionRecord

* Only update record when the TX was not ChainLocked before

* Emit dataChanged for CT_UPDATED transactions

* Use plain seconds since epoch comparison in TransactionFilterProxy::filterAcceptsRow

The QDateTime::operator< calls inside TransactionFilterProxy::filterAcceptsRow
turned out to be the slowest part in the UI when many TXs are inside
the wallet. DateRoleInt allows us to request the plain seconds since epoch
which we then use to compare against dateFrom/dateTo, which are also both
stored as seconds since epoch now.

* Don't invoke updateConfirmations directly and let pollBalanceChanged handle it

* Implement AddressTableModel::labelForDestination

This one avoids converting from string to CBitcoinAddress and calling
.Get() on the result.

* Also store CBitcoinAddress object and CTxDestination in TransactionRecord

This avoids frequent and slow conversion

* Use labelForDestination when possible

This avoids unnecessary conversions

* Don't set fForceCheckBalanceChanged to true when IS lock is received

We already do this through updateTransaction(), which is also called when
an IS lock is received for one of our own TXs.

* Only update lockedByChainLocks and lockedByInstantSend when a change is possible

lockedByChainLocks can never get back to false, so no need to re-check it.
Same with lockedByInstantSend, except when a ChainLock overrides it.

* Hold and update label in TransactionRecord

Instead of looking it up in data()

* Review suggestions

* Use proper columns in dataChanged call in updateAddressBook
2019-10-19 13:39:02 +03:00
..
forms Qt: Remove old themes (#3141) 2019-10-10 14:53:00 +03:00
locale
res Qt: Remove old themes (#3141) 2019-10-10 14:53:00 +03:00
test Merge #11210: Stop test_bitcoin-qt touching ~/.bitcoin 2019-09-24 17:47:35 +02:00
addressbookpage.cpp Qt: Remove old themes (#3141) 2019-10-10 14:53:00 +03:00
addressbookpage.h Merge #10568: Remove unnecessary forward class declarations in header files 2019-07-09 13:08:20 -05:00
addresstablemodel.cpp Fix largest part of GUI lockups with large wallets (#3155) 2019-10-19 13:39:02 +03:00
addresstablemodel.h Fix largest part of GUI lockups with large wallets (#3155) 2019-10-19 13:39:02 +03:00
askpassphrasedialog.cpp Update copyright date (2019) (#2970) 2019-06-11 14:46:07 +03:00
askpassphrasedialog.h
bantablemodel.cpp Merge #10175: Remove excess logic. 2019-06-19 08:20:15 -05:00
bantablemodel.h
bitcoinaddressvalidator.cpp Update copyright date (2019) (#2970) 2019-06-11 14:46:07 +03:00
bitcoinaddressvalidator.h
bitcoinamountfield.cpp
bitcoinamountfield.h
bitcoingui.cpp Qt: Remove old themes (#3141) 2019-10-10 14:53:00 +03:00
bitcoingui.h #10483 scripted-diff: Use the C++11 keyword nullptr to denote the pointer literal instead of the macro NULL 2019-08-12 09:07:03 -05:00
bitcoinunits.cpp Update copyright date (2019) (#2970) 2019-06-11 14:46:07 +03:00
bitcoinunits.h Update copyright date (2019) (#2970) 2019-06-11 14:46:07 +03:00
callback.h Merge #10098: Make qt wallet test compatible with qt4 2019-05-21 08:52:47 -05:00
clientmodel.cpp Merge #10864: Avoid redundant redeclaration of GetWarnings(const string&) 2019-07-24 11:59:09 -05:00
clientmodel.h Merge #10568: Remove unnecessary forward class declarations in header files 2019-07-09 13:08:20 -05:00
coincontroldialog.cpp Qt: Remove old themes (#3141) 2019-10-10 14:53:00 +03:00
coincontroldialog.h fix all of the problems 2019-09-03 18:55:21 -05:00
coincontroltreewidget.cpp Merge #10521: Limit variable scope 2019-07-08 13:50:05 -05:00
coincontroltreewidget.h
csvmodelwriter.cpp
csvmodelwriter.h
dash_locale.qrc
dash.cpp #10483 scripted-diff: Use the C++11 keyword nullptr to denote the pointer literal instead of the macro NULL 2019-08-12 09:07:03 -05:00
dash.qrc Qt: Remove old themes (#3141) 2019-10-10 14:53:00 +03:00
dashstrings.cpp Remove liquidity provider privatesend (#3082) 2019-09-15 23:08:05 +03:00
editaddressdialog.cpp Update copyright date (2019) (#2970) 2019-06-11 14:46:07 +03:00
editaddressdialog.h
guiconstants.h Update copyright date (2019) (#2970) 2019-06-11 14:46:07 +03:00
guiutil.cpp Qt: Remove old themes (#3141) 2019-10-10 14:53:00 +03:00
guiutil.h Qt: Remove old themes (#3141) 2019-10-10 14:53:00 +03:00
intro.cpp Merge #9895: Turn TryCreateDirectory() into TryCreateDirectories() 2019-07-09 13:08:21 -05:00
intro.h
macdockiconhandler.h
macdockiconhandler.mm
macnotificationhandler.h
macnotificationhandler.mm
macos_appnap.h Backport #12783: macOS: disable AppNap during sync (and mixing) (#3024) 2019-07-15 14:38:55 +03:00
macos_appnap.mm Backport #12783: macOS: disable AppNap during sync (and mixing) (#3024) 2019-07-15 14:38:55 +03:00
masternodelist.cpp Implement WalletModel::IsSpendable for CScript 2019-09-25 10:33:21 +02:00
masternodelist.h Multiple speed optimizations for deterministic MN list handling (#2972) 2019-06-13 12:01:26 +03:00
modaloverlay.cpp Merge #10633: doc: Fix various typos 2019-07-11 10:34:46 -05:00
modaloverlay.h
networkstyle.cpp Qt: Remove old themes (#3141) 2019-10-10 14:53:00 +03:00
networkstyle.h Update copyright date (2019) (#2970) 2019-06-11 14:46:07 +03:00
notificator.cpp
notificator.h
openuridialog.cpp #10483 scripted-diff: Use the C++11 keyword nullptr to denote the pointer literal instead of the macro NULL 2019-08-12 09:07:03 -05:00
openuridialog.h
optionsdialog.cpp Qt: Remove old themes (#3141) 2019-10-10 14:53:00 +03:00
optionsdialog.h
optionsmodel.cpp Merge #11338: qt: Backup former GUI settings on -resetguisettings 2019-09-25 10:33:21 +02:00
optionsmodel.h
overviewpage.cpp Qt: Remove old themes (#3141) 2019-10-10 14:53:00 +03:00
overviewpage.h
paymentrequest.proto
paymentrequestplus.cpp #10483 scripted-diff: Use the C++11 keyword nullptr to denote the pointer literal instead of the macro NULL 2019-08-12 09:07:03 -05:00
paymentrequestplus.h
paymentserver.cpp #10483 scripted-diff: Use the C++11 keyword nullptr to denote the pointer literal instead of the macro NULL 2019-08-12 09:07:03 -05:00
paymentserver.h #10483 scripted-diff: Use the C++11 keyword nullptr to denote the pointer literal instead of the macro NULL 2019-08-12 09:07:03 -05:00
peertablemodel.cpp scripted-diff: Remove Q_FOREACH #10502 2019-07-09 13:08:21 -05:00
peertablemodel.h
platformstyle.cpp scripted-diff: Remove Q_FOREACH #10502 2019-07-09 13:08:21 -05:00
platformstyle.h
qrdialog.cpp #10483 scripted-diff: Use the C++11 keyword nullptr to denote the pointer literal instead of the macro NULL 2019-08-12 09:07:03 -05:00
qrdialog.h
qvalidatedlineedit.cpp
qvalidatedlineedit.h
qvaluecombobox.cpp
qvaluecombobox.h
receivecoinsdialog.cpp Qt: Remove old themes (#3141) 2019-10-10 14:53:00 +03:00
receivecoinsdialog.h Merge #10568: Remove unnecessary forward class declarations in header files 2019-07-09 13:08:20 -05:00
receiverequestdialog.cpp #10483 scripted-diff: Use the C++11 keyword nullptr to denote the pointer literal instead of the macro NULL 2019-08-12 09:07:03 -05:00
receiverequestdialog.h
recentrequeststablemodel.cpp #10483 scripted-diff: Use the C++11 keyword nullptr to denote the pointer literal instead of the macro NULL 2019-08-12 09:07:03 -05:00
recentrequeststablemodel.h
rpcconsole.cpp Qt: Remove old themes (#3141) 2019-10-10 14:53:00 +03:00
rpcconsole.h #10483 scripted-diff: Use the C++11 keyword nullptr to denote the pointer literal instead of the macro NULL 2019-08-12 09:07:03 -05:00
sendcoinsdialog.cpp Qt: Remove old themes (#3141) 2019-10-10 14:53:00 +03:00
sendcoinsdialog.h Merge #10706: Improve wallet fee logic and fix GUI bugs 2019-09-03 22:40:26 -05:00
sendcoinsentry.cpp Qt: Remove old themes (#3141) 2019-10-10 14:53:00 +03:00
sendcoinsentry.h
signverifymessagedialog.cpp Qt: Remove old themes (#3141) 2019-10-10 14:53:00 +03:00
signverifymessagedialog.h
splashscreen.cpp Qt: Remove old themes (#3141) 2019-10-10 14:53:00 +03:00
splashscreen.h
trafficgraphdata.cpp
trafficgraphdata.h
trafficgraphwidget.cpp scripted-diff: Remove Q_FOREACH #10502 2019-07-09 13:08:21 -05:00
trafficgraphwidget.h
transactiondesc.cpp Fix largest part of GUI lockups with large wallets (#3155) 2019-10-19 13:39:02 +03:00
transactiondesc.h
transactiondescdialog.cpp
transactiondescdialog.h
transactionfilterproxy.cpp Fix largest part of GUI lockups with large wallets (#3155) 2019-10-19 13:39:02 +03:00
transactionfilterproxy.h Fix largest part of GUI lockups with large wallets (#3155) 2019-10-19 13:39:02 +03:00
transactionrecord.cpp Fix largest part of GUI lockups with large wallets (#3155) 2019-10-19 13:39:02 +03:00
transactionrecord.h Fix largest part of GUI lockups with large wallets (#3155) 2019-10-19 13:39:02 +03:00
transactiontablemodel.cpp Fix largest part of GUI lockups with large wallets (#3155) 2019-10-19 13:39:02 +03:00
transactiontablemodel.h Fix largest part of GUI lockups with large wallets (#3155) 2019-10-19 13:39:02 +03:00
transactionview.cpp Qt: Remove old themes (#3141) 2019-10-10 14:53:00 +03:00
transactionview.h Merge #11015: [Qt] Add delay before filtering transactions 2019-09-25 10:33:21 +02:00
utilitydialog.cpp Qt: Remove old themes (#3141) 2019-10-10 14:53:00 +03:00
utilitydialog.h Merge #10568: Remove unnecessary forward class declarations in header files 2019-07-09 13:08:20 -05:00
walletframe.cpp
walletframe.h
walletmodel.cpp Fix largest part of GUI lockups with large wallets (#3155) 2019-10-19 13:39:02 +03:00
walletmodel.h Implement WalletModel::IsSpendable for CScript 2019-09-25 10:33:21 +02:00
walletmodeltransaction.cpp scripted-diff: Remove Q_FOREACH #10502 2019-07-09 13:08:21 -05:00
walletmodeltransaction.h
walletview.cpp Qt: Remove old themes (#3141) 2019-10-10 14:53:00 +03:00
walletview.h
winshutdownmonitor.cpp #10483 scripted-diff: Use the C++11 keyword nullptr to denote the pointer literal instead of the macro NULL 2019-08-12 09:07:03 -05:00
winshutdownmonitor.h