diff options
author | MarcoFalke <falke.marco@gmail.com> | 2018-08-20 13:26:17 -0400 |
---|---|---|
committer | MarcoFalke <falke.marco@gmail.com> | 2018-08-20 13:26:30 -0400 |
commit | 4732fa133abdf374790825abbf1bbf56819cc806 (patch) | |
tree | 1460ea935434a9e6a2b961a9d5b8834a971e8cdc /src/qt | |
parent | 2a583406c00761c0ac1d162531256b401d5b16c3 (diff) | |
parent | d795c610d3095eeff1bfe5c1a34877cf0a841823 (diff) |
Merge #12818: [qt] TransactionView: highlight replacement tx after fee bump
d795c610d3 [qt] TransactionView: highlight replacement tx after fee bump (Sjors Provoost)
Pull request description:
Consistent with #12421 which highlights the transaction after send.
<img width="747" alt="1" src="https://user-images.githubusercontent.com/10217/38036280-a7358ea4-32a6-11e8-8f92-417e9e1e3e8b.png">
<img width="685" alt="2" src="https://user-images.githubusercontent.com/10217/38036289-aac87040-32a6-11e8-9f94-81745ff6c592.png">
~I'm not too proud of the `QTimer::singleShot(10` bit; any suggestions on how to properly wait for the transactions table to become aware of the new transaction?~
Although I could have called `focusTransaction()` directly from `TransactionView::bumpFee()` I'm using the same signal as the send screen. This should make it easier to move fee bump / transaction replacement functionality around later.
Tree-SHA512: 242055b7c3d32c7b2cf871f5ceda2581221902fd53fa29e0b092713fc16d3191adbe8cbb28417d522dda9febec8cc05e07afe3489cd7caaecd33460c1dde6fbc
Diffstat (limited to 'src/qt')
-rw-r--r-- | src/qt/transactionview.cpp | 13 | ||||
-rw-r--r-- | src/qt/transactionview.h | 2 | ||||
-rw-r--r-- | src/qt/walletmodel.cpp | 5 | ||||
-rw-r--r-- | src/qt/walletmodel.h | 2 |
4 files changed, 17 insertions, 5 deletions
diff --git a/src/qt/transactionview.cpp b/src/qt/transactionview.cpp index 6405b70659..23c50f55ba 100644 --- a/src/qt/transactionview.cpp +++ b/src/qt/transactionview.cpp @@ -19,6 +19,7 @@ #include <ui_interface.h> +#include <QApplication> #include <QComboBox> #include <QDateTimeEdit> #include <QDesktopServices> @@ -198,6 +199,11 @@ TransactionView::TransactionView(const PlatformStyle *platformStyle, QWidget *pa connect(copyTxPlainText, SIGNAL(triggered()), this, SLOT(copyTxPlainText())); connect(editLabelAction, SIGNAL(triggered()), this, SLOT(editLabel())); connect(showDetailsAction, SIGNAL(triggered()), this, SLOT(showDetails())); + + // Highlight transaction after fee bump + connect(this, &TransactionView::bumpedFee, [this](const uint256& txid) { + focusTransaction(txid); + }); } void TransactionView::setModel(WalletModel *_model) @@ -428,9 +434,14 @@ void TransactionView::bumpFee() hash.SetHex(hashQStr.toStdString()); // Bump tx fee over the walletModel - if (model->bumpFee(hash)) { + uint256 newHash; + if (model->bumpFee(hash, newHash)) { // Update the table + transactionView->selectionModel()->clearSelection(); model->getTransactionTableModel()->updateTransaction(hashQStr, CT_UPDATED, true); + + qApp->processEvents(); + Q_EMIT bumpedFee(newHash); } } diff --git a/src/qt/transactionview.h b/src/qt/transactionview.h index cf9f8fc201..fdd8b069c7 100644 --- a/src/qt/transactionview.h +++ b/src/qt/transactionview.h @@ -110,6 +110,8 @@ Q_SIGNALS: /** Fired when a message should be reported to the user */ void message(const QString &title, const QString &message, unsigned int style); + void bumpedFee(const uint256& txid); + public Q_SLOTS: void chooseDate(int idx); void chooseType(int idx); diff --git a/src/qt/walletmodel.cpp b/src/qt/walletmodel.cpp index ed3d22361a..d91cdcdc1f 100644 --- a/src/qt/walletmodel.cpp +++ b/src/qt/walletmodel.cpp @@ -492,7 +492,7 @@ bool WalletModel::saveReceiveRequest(const std::string &sAddress, const int64_t return m_wallet->addDestData(dest, key, sRequest); } -bool WalletModel::bumpFee(uint256 hash) +bool WalletModel::bumpFee(uint256 hash, uint256& new_hash) { CCoinControl coin_control; coin_control.m_signal_bip125_rbf = true; @@ -544,8 +544,7 @@ bool WalletModel::bumpFee(uint256 hash) return false; } // commit the bumped transaction - uint256 txid; - if(!m_wallet->commitBumpTransaction(hash, std::move(mtx), errors, txid)) { + if(!m_wallet->commitBumpTransaction(hash, std::move(mtx), errors, new_hash)) { QMessageBox::critical(0, tr("Fee bump error"), tr("Could not commit transaction") + "<br />(" + QString::fromStdString(errors[0])+")"); return false; diff --git a/src/qt/walletmodel.h b/src/qt/walletmodel.h index 4158407c6a..b22728c69b 100644 --- a/src/qt/walletmodel.h +++ b/src/qt/walletmodel.h @@ -194,7 +194,7 @@ public: void loadReceiveRequests(std::vector<std::string>& vReceiveRequests); bool saveReceiveRequest(const std::string &sAddress, const int64_t nId, const std::string &sRequest); - bool bumpFee(uint256 hash); + bool bumpFee(uint256 hash, uint256& new_hash); static bool isWalletEnabled(); bool privateKeysDisabled() const; |