Index: qgsmapcanvas.cpp =================================================================== --- qgsmapcanvas.cpp (revision 14982) +++ qgsmapcanvas.cpp (working copy) @@ -579,6 +579,8 @@ if ( mLastExtentIndex > 0 ) { + // This code should duplicate QgsMapCanvas::setExtent(), but without + // modifying the view history. mLastExtentIndex--; mMapRenderer->setExtent( mLastExtent[mLastExtentIndex] ); emit extentsChanged(); @@ -589,6 +591,8 @@ // update controls' enabled state emit zoomLastStatusChanged( mLastExtentIndex > 0 ); emit zoomNextStatusChanged( mLastExtentIndex < mLastExtent.size() - 1 ); + + updateCanvasItemPositions(); } } // zoomToPreviousExtent @@ -601,6 +605,8 @@ } if ( mLastExtentIndex < mLastExtent.size() - 1 ) { + // This code should duplicate QgsMapCanvas::setExtent(), but without + // modifying the view history. mLastExtentIndex++; mMapRenderer->setExtent( mLastExtent[mLastExtentIndex] ); emit extentsChanged(); @@ -611,6 +617,8 @@ // update controls' enabled state emit zoomLastStatusChanged( mLastExtentIndex > 0 ); emit zoomNextStatusChanged( mLastExtentIndex < mLastExtent.size() - 1 ); + + updateCanvasItemPositions(); } }// zoomToNextExtent