18
18
#include " qgsmapcanvas.h"
19
19
#include " qgsmaptopixel.h"
20
20
#include " qgscursors.h"
21
+ #include " qgsrubberband.h"
21
22
22
23
#include < QMouseEvent>
23
- #include < QRubberBand>
24
24
#include < QRect>
25
25
#include < QCursor>
26
26
#include < QPixmap>
27
27
#include " qgslogger.h"
28
28
29
29
30
30
QgsMapToolZoom::QgsMapToolZoom ( QgsMapCanvas* canvas, bool zoomOut )
31
- : QgsMapTool( canvas ), mZoomOut( zoomOut ), mDragging( false )
31
+ : QgsMapTool( canvas ), mZoomOut( zoomOut ), mDragging( false ), mRubberBand( 0 )
32
32
{
33
33
// set the cursor
34
34
QPixmap myZoomQPixmap = QPixmap (( const char ** )( zoomOut ? zoom_out : zoom_in ) );
35
35
mCursor = QCursor ( myZoomQPixmap, 7 , 7 );
36
36
}
37
37
38
+ QgsMapToolZoom::~QgsMapToolZoom ()
39
+ {
40
+ delete mRubberBand ;
41
+ }
42
+
38
43
39
44
void QgsMapToolZoom::canvasMoveEvent ( QMouseEvent * e )
40
45
{
@@ -44,12 +49,16 @@ void QgsMapToolZoom::canvasMoveEvent( QMouseEvent * e )
44
49
if ( !mDragging )
45
50
{
46
51
mDragging = true ;
47
- mRubberBand = new QRubberBand ( QRubberBand::Rectangle, mCanvas );
52
+ delete mRubberBand ;
53
+ mRubberBand = new QgsRubberBand ( mCanvas , true );
48
54
mZoomRect .setTopLeft ( e->pos () );
49
55
}
50
56
mZoomRect .setBottomRight ( e->pos () );
51
- mRubberBand ->setGeometry ( mZoomRect .normalized () );
52
- mRubberBand ->show ();
57
+ if ( mRubberBand )
58
+ {
59
+ mRubberBand ->setToCanvasRectangle ( mZoomRect );
60
+ mRubberBand ->show ();
61
+ }
53
62
}
54
63
55
64
@@ -126,3 +135,9 @@ void QgsMapToolZoom::canvasReleaseEvent( QMouseEvent * e )
126
135
mCanvas ->zoomWithCenter ( e->x (), e->y (), !mZoomOut );
127
136
}
128
137
}
138
+
139
+ void QgsMapToolZoom::deactivate ()
140
+ {
141
+ delete mRubberBand ;
142
+ mRubberBand = 0 ;
143
+ }
0 commit comments