19
19
#include " qgsadvanceddigitizingdockwidget.h"
20
20
#include " qgsvectorlayer.h"
21
21
#include " qgsgeometryfixes.h"
22
+ #include " qgssnaptogridcanvasitem.h"
22
23
23
24
QgsMapToolAdvancedDigitizing::QgsMapToolAdvancedDigitizing ( QgsMapCanvas *canvas, QgsAdvancedDigitizingDockWidget *cadDockWidget )
24
25
: QgsMapToolEdit( canvas )
@@ -109,6 +110,7 @@ void QgsMapToolAdvancedDigitizing::canvasMoveEvent( QgsMapMouseEvent *e )
109
110
if ( mSnapToGridEnabled && layer )
110
111
{
111
112
e->snapToGrid ( layer->geometryFixes ()->geometryPrecision (), layer->crs () );
113
+ mSnapToGridCanvasItem ->setPoint ( e->mapPoint () );
112
114
}
113
115
114
116
cadCanvasMoveEvent ( e );
@@ -119,13 +121,19 @@ void QgsMapToolAdvancedDigitizing::activate()
119
121
QgsMapToolEdit::activate ();
120
122
connect ( mCadDockWidget , &QgsAdvancedDigitizingDockWidget::pointChanged, this , &QgsMapToolAdvancedDigitizing::cadPointChanged );
121
123
mCadDockWidget ->enable ();
124
+ mSnapToGridCanvasItem = new QgsSnapToGridCanvasItem ( mCanvas );
125
+ mSnapToGridCanvasItem ->setCrs ( currentVectorLayer ()->crs () );
126
+ mSnapToGridCanvasItem ->setPrecision ( currentVectorLayer ()->geometryFixes ()->geometryPrecision () );
127
+ mSnapToGridCanvasItem ->setEnabled ( mSnapToGridEnabled );
122
128
}
123
129
124
130
void QgsMapToolAdvancedDigitizing::deactivate ()
125
131
{
126
132
QgsMapToolEdit::deactivate ();
127
133
disconnect ( mCadDockWidget , &QgsAdvancedDigitizingDockWidget::pointChanged, this , &QgsMapToolAdvancedDigitizing::cadPointChanged );
128
134
mCadDockWidget ->disable ();
135
+ delete mSnapToGridCanvasItem ;
136
+ mSnapToGridCanvasItem = nullptr ;
129
137
}
130
138
131
139
void QgsMapToolAdvancedDigitizing::cadPointChanged ( const QgsPointXY &point )
@@ -142,5 +150,9 @@ bool QgsMapToolAdvancedDigitizing::snapToGridEnabled() const
142
150
143
151
void QgsMapToolAdvancedDigitizing::setSnapToGridEnabled ( bool snapToGridEnabled )
144
152
{
145
- mSnapToGridEnabled = snapToGridEnabled;
153
+ if ( mSnapToGridCanvasItem )
154
+ {
155
+ mSnapToGridEnabled = snapToGridEnabled;
156
+ mSnapToGridCanvasItem ->setEnabled ( snapToGridEnabled );
157
+ }
146
158
}
0 commit comments