Skip to content

Commit b68ce37

Browse files
committed
Highlight grid for map tools that snap to grid
1 parent 6c467fb commit b68ce37

File tree

2 files changed

+15
-1
lines changed

2 files changed

+15
-1
lines changed

src/gui/qgsmaptooladvanceddigitizing.cpp

+13-1
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@
1919
#include "qgsadvanceddigitizingdockwidget.h"
2020
#include "qgsvectorlayer.h"
2121
#include "qgsgeometryfixes.h"
22+
#include "qgssnaptogridcanvasitem.h"
2223

2324
QgsMapToolAdvancedDigitizing::QgsMapToolAdvancedDigitizing( QgsMapCanvas *canvas, QgsAdvancedDigitizingDockWidget *cadDockWidget )
2425
: QgsMapToolEdit( canvas )
@@ -109,6 +110,7 @@ void QgsMapToolAdvancedDigitizing::canvasMoveEvent( QgsMapMouseEvent *e )
109110
if ( mSnapToGridEnabled && layer )
110111
{
111112
e->snapToGrid( layer->geometryFixes()->geometryPrecision(), layer->crs() );
113+
mSnapToGridCanvasItem->setPoint( e->mapPoint() );
112114
}
113115

114116
cadCanvasMoveEvent( e );
@@ -119,13 +121,19 @@ void QgsMapToolAdvancedDigitizing::activate()
119121
QgsMapToolEdit::activate();
120122
connect( mCadDockWidget, &QgsAdvancedDigitizingDockWidget::pointChanged, this, &QgsMapToolAdvancedDigitizing::cadPointChanged );
121123
mCadDockWidget->enable();
124+
mSnapToGridCanvasItem = new QgsSnapToGridCanvasItem( mCanvas );
125+
mSnapToGridCanvasItem->setCrs( currentVectorLayer()->crs() );
126+
mSnapToGridCanvasItem->setPrecision( currentVectorLayer()->geometryFixes()->geometryPrecision() );
127+
mSnapToGridCanvasItem->setEnabled( mSnapToGridEnabled );
122128
}
123129

124130
void QgsMapToolAdvancedDigitizing::deactivate()
125131
{
126132
QgsMapToolEdit::deactivate();
127133
disconnect( mCadDockWidget, &QgsAdvancedDigitizingDockWidget::pointChanged, this, &QgsMapToolAdvancedDigitizing::cadPointChanged );
128134
mCadDockWidget->disable();
135+
delete mSnapToGridCanvasItem;
136+
mSnapToGridCanvasItem = nullptr;
129137
}
130138

131139
void QgsMapToolAdvancedDigitizing::cadPointChanged( const QgsPointXY &point )
@@ -142,5 +150,9 @@ bool QgsMapToolAdvancedDigitizing::snapToGridEnabled() const
142150

143151
void QgsMapToolAdvancedDigitizing::setSnapToGridEnabled( bool snapToGridEnabled )
144152
{
145-
mSnapToGridEnabled = snapToGridEnabled;
153+
if ( mSnapToGridCanvasItem )
154+
{
155+
mSnapToGridEnabled = snapToGridEnabled;
156+
mSnapToGridCanvasItem->setEnabled( snapToGridEnabled );
157+
}
146158
}

src/gui/qgsmaptooladvanceddigitizing.h

+2
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@
2222

2323
class QgsMapMouseEvent;
2424
class QgsAdvancedDigitizingDockWidget;
25+
class QgsSnapToGridCanvasItem;
2526

2627
/**
2728
* \ingroup gui
@@ -175,6 +176,7 @@ class GUI_EXPORT QgsMapToolAdvancedDigitizing : public QgsMapToolEdit
175176
bool mAutoSnapEnabled = true;
176177
//! Whether to snap to grid before passing coordinates to cadCanvas*Event()
177178
bool mSnapToGridEnabled = true;
179+
QgsSnapToGridCanvasItem *mSnapToGridCanvasItem = nullptr;
178180
};
179181

180182
#endif // QGSMAPTOOLADVANCEDDIGITIZE_H

0 commit comments

Comments
 (0)