Skip to content

Commit 86949cb

Browse files
authored
Merge pull request #5037 from nyalldawson/render_progress_bar
Avoid 'flashy' status bar progress widget when map renders are fast
2 parents 0c46ac4 + 7a314f3 commit 86949cb

File tree

2 files changed

+27
-1
lines changed

2 files changed

+27
-1
lines changed

src/app/qgisapp.cpp

+22-1
Original file line numberDiff line numberDiff line change
@@ -8283,11 +8283,32 @@ void QgisApp::refreshMapCanvas()
82838283

82848284
void QgisApp::canvasRefreshStarted()
82858285
{
8286-
showProgress( -1, 0 ); // trick to make progress bar show busy indicator
8286+
mLastRenderTime.restart();
8287+
// if previous render took less than 0.5 seconds, delay the appearance of the
8288+
// render in progress status bar by 0.5 seconds - this avoids the status bar
8289+
// rapidly appearing and then disappearing for very fast renders
8290+
if ( mLastRenderTimeSeconds > 0 && mLastRenderTimeSeconds < 0.5 )
8291+
{
8292+
mRenderProgressBarTimer.setSingleShot( true );
8293+
mRenderProgressBarTimer.setInterval( 500 );
8294+
disconnect( mRenderProgressBarTimerConnection );
8295+
mRenderProgressBarTimerConnection = connect( &mRenderProgressBarTimer, &QTimer::timeout, [ = ]()
8296+
{
8297+
showProgress( -1, 0 );
8298+
}
8299+
);
8300+
mRenderProgressBarTimer.start();
8301+
}
8302+
else
8303+
{
8304+
showProgress( -1, 0 ); // trick to make progress bar show busy indicator
8305+
}
82878306
}
82888307

82898308
void QgisApp::canvasRefreshFinished()
82908309
{
8310+
mRenderProgressBarTimer.stop();
8311+
mLastRenderTimeSeconds = mLastRenderTime.elapsed() / 1000.0;
82918312
showProgress( 0, 0 ); // stop the busy indicator
82928313
}
82938314

src/app/qgisapp.h

+5
Original file line numberDiff line numberDiff line change
@@ -2067,6 +2067,11 @@ class APP_EXPORT QgisApp : public QMainWindow, private Ui::MainWindow
20672067

20682068
QgsStatusBar *mStatusBar = nullptr;
20692069

2070+
QTime mLastRenderTime;
2071+
double mLastRenderTimeSeconds = 0;
2072+
QTimer mRenderProgressBarTimer;
2073+
QMetaObject::Connection mRenderProgressBarTimerConnection;
2074+
20702075
friend class TestQgisAppPython;
20712076
};
20722077

0 commit comments

Comments
 (0)