[ui] prevent infinite canvas redraw due to (#6098)

progress bar changing status bar height when
shown/hidden.

Yes, it's as bad as it sounds.
This commit is contained in:
Mathieu Pellerin 2018-01-19 06:27:23 +07:00 committed by GitHub
parent bc1bfd3406
commit 5dc91b4b1f
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -2783,10 +2783,8 @@ void QgisApp::createStatusBar()
// And also rendering suppression checkbox // And also rendering suppression checkbox
mProgressBar = new QProgressBar( mStatusBar ); mProgressBar = new QProgressBar( mStatusBar );
mProgressBar->setObjectName( QStringLiteral( "mProgressBar" ) ); mProgressBar->setObjectName( QStringLiteral( "mProgressBar" ) );
mProgressBar->setMaximumWidth( 100 ); mProgressBar->setMaximumWidth( 0 );
mProgressBar->hide(); mProgressBar->setMaximumHeight( 18 );
mProgressBar->setWhatsThis( tr( "Progress bar that displays the status "
"of rendering layers and other time-intensive operations" ) );
mStatusBar->addPermanentWidget( mProgressBar, 1 ); mStatusBar->addPermanentWidget( mProgressBar, 1 );
connect( mMapCanvas, &QgsMapCanvas::renderStarting, this, &QgisApp::canvasRefreshStarted ); connect( mMapCanvas, &QgsMapCanvas::renderStarting, this, &QgisApp::canvasRefreshStarted );
@ -11084,14 +11082,14 @@ void QgisApp::showProgress( int progress, int totalSteps )
if ( progress == totalSteps ) if ( progress == totalSteps )
{ {
mProgressBar->reset(); mProgressBar->reset();
mProgressBar->hide(); mProgressBar->setMaximumWidth( 0 );
} }
else else
{ {
//only call show if not already hidden to reduce flicker //only call show if not already hidden to reduce flicker
if ( !mProgressBar->isVisible() ) if ( mProgressBar->maximumWidth() == 0 )
{ {
mProgressBar->show(); mProgressBar->setMaximumWidth( 100 );
} }
mProgressBar->setMaximum( totalSteps ); mProgressBar->setMaximum( totalSteps );
mProgressBar->setValue( progress ); mProgressBar->setValue( progress );