diff --git a/src/qt/bitcoingui.cpp b/src/qt/bitcoingui.cpp index 0c9f778ff60..7943684eefc 100644 --- a/src/qt/bitcoingui.cpp +++ b/src/qt/bitcoingui.cpp @@ -345,6 +345,7 @@ void BitcoinGUI::setNumConnections(int count) void BitcoinGUI::setNumBlocks(int count) { + int initTotal = clientModel->getNumBlocksAtStartup(); int total = clientModel->getTotalBlocksEstimate(); QString tooltip; @@ -352,8 +353,8 @@ void BitcoinGUI::setNumBlocks(int count) { progressBarLabel->setVisible(true); progressBar->setVisible(true); - progressBar->setMaximum(total); - progressBar->setValue(count); + progressBar->setMaximum(total - initTotal); + progressBar->setValue(count - initTotal); tooltip = tr("Downloaded %1 of %2 blocks of transaction history.").arg(count).arg(total); } else diff --git a/src/qt/clientmodel.cpp b/src/qt/clientmodel.cpp index d3074731027..08abaa6b491 100644 --- a/src/qt/clientmodel.cpp +++ b/src/qt/clientmodel.cpp @@ -18,6 +18,8 @@ ClientModel::ClientModel(OptionsModel *optionsModel, QObject *parent) : QTimer *timer = new QTimer(this); connect(timer, SIGNAL(timeout()), this, SLOT(update())); timer->start(MODEL_UPDATE_DELAY); + + numBlocksAtStartup = -1; } int ClientModel::getNumConnections() const @@ -30,6 +32,12 @@ int ClientModel::getNumBlocks() const return nBestHeight; } +int ClientModel::getNumBlocksAtStartup() +{ + if (numBlocksAtStartup == -1) numBlocksAtStartup = getNumBlocks(); + return numBlocksAtStartup; +} + QDateTime ClientModel::getLastBlockDate() const { return QDateTime::fromTime_t(pindexBest->GetBlockTime()); diff --git a/src/qt/clientmodel.h b/src/qt/clientmodel.h index 15387056c84..8605fb93ab8 100644 --- a/src/qt/clientmodel.h +++ b/src/qt/clientmodel.h @@ -23,6 +23,7 @@ public: int getNumConnections() const; int getNumBlocks() const; + int getNumBlocksAtStartup(); QDateTime getLastBlockDate() const; @@ -41,6 +42,8 @@ private: int cachedNumConnections; int cachedNumBlocks; + int numBlocksAtStartup; + signals: void numConnectionsChanged(int count); void numBlocksChanged(int count);