diff --git a/src/app/qgsmeasuredialog.cpp b/src/app/qgsmeasuredialog.cpp index 5161d02baa4..b95ba11ca42 100644 --- a/src/app/qgsmeasuredialog.cpp +++ b/src/app/qgsmeasuredialog.cpp @@ -57,7 +57,9 @@ QgsMeasureDialog::QgsMeasureDialog( QgsMeasureTool* tool, Qt::WFlags f ) else mcbProjectionEnabled->setCheckState( Qt::Unchecked ); - connect( mcbProjectionEnabled, SIGNAL( stateChanged( int ) ), + // Update whenever the canvas has refreshed. Maybe more often than needed, + // but at least every time any settings changes + connect( mTool->canvas(), SIGNAL( mapCanvasRefreshed() ), this, SLOT( changeProjectionEnabledState() ) ); updateUi(); @@ -298,6 +300,7 @@ void QgsMeasureDialog::convertMeasurement( double &measure, QGis::UnitType &u, b void QgsMeasureDialog::changeProjectionEnabledState() { + QgsDebugMsg( "Entering!" ); // store value QSettings settings; if ( mcbProjectionEnabled->isChecked() ) @@ -354,6 +357,7 @@ void QgsMeasureDialog::changeProjectionEnabledState() b = false; } } + QgsDebugMsg( "Exiting!" ); } void QgsMeasureDialog::configureDistanceArea() diff --git a/src/app/qgsmeasuretool.cpp b/src/app/qgsmeasuretool.cpp index c40586311e7..cb4576a48f7 100644 --- a/src/app/qgsmeasuretool.cpp +++ b/src/app/qgsmeasuretool.cpp @@ -48,6 +48,7 @@ QgsMeasureTool::QgsMeasureTool( QgsMapCanvas* canvas, bool measureArea ) QgsMeasureTool::~QgsMeasureTool() { + delete mDialog; delete mRubberBand; } diff --git a/src/gui/qgsmapcanvas.cpp b/src/gui/qgsmapcanvas.cpp index cc30cde98d9..43cfea6bc2b 100644 --- a/src/gui/qgsmapcanvas.cpp +++ b/src/gui/qgsmapcanvas.cpp @@ -427,6 +427,10 @@ void QgsMapCanvas::refresh() } mDrawing = false; + + // Done refreshing + emit mapCanvasRefreshed(); + } // refresh void QgsMapCanvas::updateMap() diff --git a/src/gui/qgsmapcanvas.h b/src/gui/qgsmapcanvas.h index 8db6d87d07e..845189bedb1 100644 --- a/src/gui/qgsmapcanvas.h +++ b/src/gui/qgsmapcanvas.h @@ -335,6 +335,10 @@ class GUI_EXPORT QgsMapCanvas : public QGraphicsView */ void renderComplete( QPainter * ); + /** Emitted when canvas finished a refresh request. + \note Added in 2.0 */ + void mapCanvasRefreshed(); + /** Emitted when the canvas is about to be rendered. \note Added in 1.5 */ void renderStarting();