diff options
author | Marius Kintel <marius@kintel.net> | 2011-11-09 02:48:07 (GMT) |
---|---|---|
committer | Marius Kintel <marius@kintel.net> | 2011-11-09 02:48:07 (GMT) |
commit | 5c30bcb691729b52c8456f57b42d6514a9325cf8 (patch) | |
tree | e7360a91d11729bc3d6a8b49d417445cf796021a | |
parent | 63c57065335f52148acc6f14d964b5aa9f105b52 (diff) |
bugfix: Fix problem with progress bar sometimes jumping backwards
-rw-r--r-- | src/ProgressWidget.cc | 5 | ||||
-rw-r--r-- | src/ProgressWidget.h | 1 | ||||
-rw-r--r-- | src/mainwin.cc | 3 |
3 files changed, 8 insertions, 1 deletions
diff --git a/src/ProgressWidget.cc b/src/ProgressWidget.cc index a386192..112e239 100644 --- a/src/ProgressWidget.cc +++ b/src/ProgressWidget.cc @@ -29,3 +29,8 @@ void ProgressWidget::setValue(int progress) { this->progressBar->setValue(progress); } + +int ProgressWidget::value() const +{ + return this->progressBar->value(); +} diff --git a/src/ProgressWidget.h b/src/ProgressWidget.h index 715272b..83e4d40 100644 --- a/src/ProgressWidget.h +++ b/src/ProgressWidget.h @@ -15,6 +15,7 @@ public: public slots: void setRange(int minimum, int maximum); void setValue(int progress); + int value() const; void cancel(); signals: diff --git a/src/mainwin.cc b/src/mainwin.cc index a6f5be6..22fb82c 100644 --- a/src/mainwin.cc +++ b/src/mainwin.cc @@ -433,7 +433,8 @@ static void report_func(const class AbstractNode*, void *vp, int mark) #ifdef USE_PROGRESSWIDGET ProgressWidget *pw = static_cast<ProgressWidget*>(vp); int v = (int)((mark*100.0) / progress_report_count); - pw->setValue(v < 100 ? v : 99); + int percent = v < 100 ? v : 99; + if (percent > pw->value()) pw->setValue(percent); QApplication::processEvents(); if (pw->wasCanceled()) throw ProgressCancelException(); #else |