diff --git a/src/qt/mintingtablemodel.cpp b/src/qt/mintingtablemodel.cpp index 6079f6d7d0043..b2974cc1a9a61 100644 --- a/src/qt/mintingtablemodel.cpp +++ b/src/qt/mintingtablemodel.cpp @@ -147,6 +147,21 @@ class MintingTablePriv return; } + // append + int offsetLower = 0; + for(const KernelRecord& kr : KernelRecord::decomposeOutput(wtx)) + { + if(parent->walletModel->wallet().isSpent(kr.hash, kr.n)) // spent + { + continue; + } + + parent->beginInsertRows(QModelIndex(), lowerIndex + offsetLower, lowerIndex + offsetLower); + cachedWallet.insert(lowerIndex + offsetLower, kr); + parent->endInsertRows(); + offsetLower++; + } + // spent const std::vector ins = wtx.tx->vin; const std::vector isMine = wtx.txin_is_mine; @@ -157,31 +172,16 @@ class MintingTablePriv uint256 phash = ins[i].prevout.hash; uint32_t n = ins[i].prevout.n; - for(int i = 0; i < cachedWallet.size(); i++){ - if(cachedWallet[i].hash == phash && cachedWallet[i].n == n){ - parent->beginRemoveRows(QModelIndex(), i, i); - cachedWallet.removeAt(i); + for(int delIndex = 0; delIndex < cachedWallet.size(); delIndex++){ + if(cachedWallet[delIndex].hash == phash && cachedWallet[delIndex].n == n){ + parent->beginRemoveRows(QModelIndex(), delIndex, delIndex); + cachedWallet.removeAt(delIndex); parent->endRemoveRows(); break; } } } } - - // append - int offsetLower = 0; - for(const KernelRecord& kr : KernelRecord::decomposeOutput(wtx)) - { - if(parent->walletModel->wallet().isSpent(kr.hash, kr.n)) // spent - { - continue; - } - - parent->beginInsertRows(QModelIndex(), lowerIndex + offsetLower, lowerIndex + offsetLower); - cachedWallet.insert(lowerIndex + offsetLower, kr); - parent->endInsertRows(); - offsetLower++; - } } else if(status == CT_UPDATED) { @@ -193,7 +193,7 @@ class MintingTablePriv parent->beginRemoveRows(QModelIndex(), lowerIndex, upperIndex - 1); for(int i = lowerIndex; i < upperIndex; i++) { - cachedWallet.removeAt(i); + cachedWallet.removeAt(lowerIndex); // don't use i } parent->endRemoveRows();