Browse Source

Display tx nLockTime correctly when set to block #

Previously when a transaction was set to lock at a specific block the
calculation was reversed, returning a negative number. This broke the UI
and caused it to display %n in place of the actual number.

In addition the previous calculation would display "Open for 0 blocks"
when the block height was such that the next block created would
finalize the transaction. Inserted the word "more" and changed the
calculation so that the last message would be "Open for 1 more block" to
better match user expectations.
0.8
Peter Todd 12 years ago
parent
commit
10046e27db
  1. 2
      src/qt/transactiondesc.cpp
  2. 2
      src/qt/transactionrecord.cpp
  3. 4
      src/qt/transactionrecord.h
  4. 2
      src/qt/transactiontablemodel.cpp

2
src/qt/transactiondesc.cpp

@ -14,7 +14,7 @@ QString TransactionDesc::FormatTxStatus(const CWalletTx& wtx)
if (!wtx.IsFinal()) if (!wtx.IsFinal())
{ {
if (wtx.nLockTime < LOCKTIME_THRESHOLD) if (wtx.nLockTime < LOCKTIME_THRESHOLD)
return tr("Open for %n block(s)", "", nBestHeight - wtx.nLockTime); return tr("Open for %n more block(s)", "", wtx.nLockTime - nBestHeight + 1);
else else
return tr("Open until %1").arg(GUIUtil::dateTimeStr(wtx.nLockTime)); return tr("Open until %1").arg(GUIUtil::dateTimeStr(wtx.nLockTime));
} }

2
src/qt/transactionrecord.cpp

@ -167,7 +167,7 @@ void TransactionRecord::updateStatus(const CWalletTx &wtx)
if (wtx.nLockTime < LOCKTIME_THRESHOLD) if (wtx.nLockTime < LOCKTIME_THRESHOLD)
{ {
status.status = TransactionStatus::OpenUntilBlock; status.status = TransactionStatus::OpenUntilBlock;
status.open_for = nBestHeight - wtx.nLockTime; status.open_for = wtx.nLockTime - nBestHeight + 1;
} }
else else
{ {

4
src/qt/transactionrecord.h

@ -47,7 +47,9 @@ public:
@{*/ @{*/
Status status; Status status;
int64 depth; int64 depth;
int64 open_for; /**< Timestamp if status==OpenUntilDate, otherwise number of blocks */ int64 open_for; /**< Timestamp if status==OpenUntilDate, otherwise number
of additional blocks that need to be mined before
finalization */
/**@}*/ /**@}*/
/** Current number of blocks (to know whether cached status is still valid) */ /** Current number of blocks (to know whether cached status is still valid) */

2
src/qt/transactiontablemodel.cpp

@ -280,7 +280,7 @@ QString TransactionTableModel::formatTxStatus(const TransactionRecord *wtx) cons
switch(wtx->status.status) switch(wtx->status.status)
{ {
case TransactionStatus::OpenUntilBlock: case TransactionStatus::OpenUntilBlock:
status = tr("Open for %n block(s)","",wtx->status.open_for); status = tr("Open for %n more block(s)","",wtx->status.open_for);
break; break;
case TransactionStatus::OpenUntilDate: case TransactionStatus::OpenUntilDate:
status = tr("Open until %1").arg(GUIUtil::dateTimeStr(wtx->status.open_for)); status = tr("Open until %1").arg(GUIUtil::dateTimeStr(wtx->status.open_for));

Loading…
Cancel
Save