patch2_for_1016.txt
| 1 | Index: src/gui/qgsmapcanvasmap.cpp | 
|---|---|
| 2 | =================================================================== | 
| 3 | --- src/gui/qgsmapcanvasmap.cpp (revision 9954) | 
| 4 | +++ src/gui/qgsmapcanvasmap.cpp (working copy) | 
| 5 | @@ -48,6 +48,8 @@ | 
| 6 |  | 
| 7 | void QgsMapCanvasMap::resize( QSize size ) | 
| 8 |  {
 | 
| 9 | + prepareGeometryChange(); // to keep QGraphicsScene indexes up to date on size change | 
| 10 | + | 
| 11 | mPixmap = QPixmap( size ); | 
| 12 | mImage = QImage( size, QImage::Format_RGB32 ); // temporary image - build it here so it is available when switching from QPixmap to QImage rendering | 
| 13 | mCanvas->mapRenderer()->setOutputSize( size, mPixmap.logicalDpiX() ); | 
| 14 | Index: src/gui/qgsmapcanvas.cpp | 
| 15 | =================================================================== | 
| 16 | --- src/gui/qgsmapcanvas.cpp (revision 9954) | 
| 17 | +++ src/gui/qgsmapcanvas.cpp (working copy) | 
| 18 | @@ -811,8 +811,8 @@ | 
| 19 | int height = lastSize.height(); | 
| 20 | lastSize = QSize( -1, -1 ); | 
| 21 |  | 
| 22 | - //set map size before scene size seems to solve the white box problem | 
| 23 | - //when moving rubber bands | 
| 24 | + //set map size before scene size helps keep scene indexes updated properly | 
| 25 | + // this was the cause of rubberband artifacts | 
| 26 | mMap->resize( QSize( width, height ) ); | 
| 27 | mScene->setSceneRect( QRectF( 0, 0, width, height ) ); | 
| 28 |  |