Skip to content

Commit 19b3325

Browse files
committed
Use the standard snap indicator with move features tool
Fixes #18957
1 parent c5ff6b9 commit 19b3325

File tree

2 files changed

+15
-1
lines changed

2 files changed

+15
-1
lines changed

src/app/qgsmaptoolmovefeature.cpp

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@
2424
#include "qgstolerance.h"
2525
#include "qgsvectorlayer.h"
2626
#include "qgsvectorlayertools.h"
27-
27+
#include "qgssnapindicator.h"
2828

2929
#include <QMessageBox>
3030
#include <QMouseEvent>
@@ -34,6 +34,7 @@
3434

3535
QgsMapToolMoveFeature::QgsMapToolMoveFeature( QgsMapCanvas *canvas, MoveMode mode )
3636
: QgsMapToolAdvancedDigitizing( canvas, QgisApp::instance()->cadDockWidget() )
37+
, mSnapIndicator( qgis::make_unique< QgsSnapIndicator>( canvas ) )
3738
, mMode( mode )
3839
{
3940
mToolName = tr( "Move feature" );
@@ -54,6 +55,7 @@ void QgsMapToolMoveFeature::cadCanvasMoveEvent( QgsMapMouseEvent *e )
5455
mRubberBand->setTranslationOffset( offsetX, offsetY );
5556
mRubberBand->updatePosition();
5657
mRubberBand->update();
58+
mSnapIndicator->setMatch( e->mapPointMatch() );
5759
}
5860
}
5961

@@ -64,6 +66,7 @@ void QgsMapToolMoveFeature::cadCanvasReleaseEvent( QgsMapMouseEvent *e )
6466
{
6567
delete mRubberBand;
6668
mRubberBand = nullptr;
69+
mSnapIndicator->setMatch( QgsPointLocator::Match() );
6770
cadDockWidget()->clear();
6871
notifyNotEditableLayer();
6972
return;
@@ -152,6 +155,7 @@ void QgsMapToolMoveFeature::cadCanvasReleaseEvent( QgsMapMouseEvent *e )
152155
mMovedFeatures.clear();
153156
delete mRubberBand;
154157
mRubberBand = nullptr;
158+
mSnapIndicator->setMatch( QgsPointLocator::Match() );
155159
return;
156160
}
157161
}
@@ -170,6 +174,7 @@ void QgsMapToolMoveFeature::cadCanvasReleaseEvent( QgsMapMouseEvent *e )
170174
cadDockWidget()->clear();
171175
delete mRubberBand;
172176
mRubberBand = nullptr;
177+
mSnapIndicator->setMatch( QgsPointLocator::Match() );
173178
return;
174179
}
175180

@@ -190,6 +195,7 @@ void QgsMapToolMoveFeature::cadCanvasReleaseEvent( QgsMapMouseEvent *e )
190195
}
191196
delete mRubberBand;
192197
mRubberBand = nullptr;
198+
mSnapIndicator->setMatch( QgsPointLocator::Match() );
193199
cadDockWidget()->clear();
194200
break;
195201

@@ -202,6 +208,7 @@ void QgsMapToolMoveFeature::cadCanvasReleaseEvent( QgsMapMouseEvent *e )
202208
emit messageEmitted( *errorMsg, Qgis::Critical );
203209
delete mRubberBand;
204210
mRubberBand = nullptr;
211+
mSnapIndicator->setMatch( QgsPointLocator::Match() );
205212
}
206213
break;
207214
}
@@ -216,6 +223,7 @@ void QgsMapToolMoveFeature::deactivate()
216223
//delete rubber band
217224
delete mRubberBand;
218225
mRubberBand = nullptr;
226+
mSnapIndicator->setMatch( QgsPointLocator::Match() );
219227

220228
QgsMapTool::deactivate();
221229
}
@@ -227,5 +235,6 @@ void QgsMapToolMoveFeature::keyReleaseEvent( QKeyEvent *e )
227235
cadDockWidget()->clear();
228236
delete mRubberBand;
229237
mRubberBand = nullptr;
238+
mSnapIndicator->setMatch( QgsPointLocator::Match() );
230239
}
231240
}

src/app/qgsmaptoolmovefeature.h

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,8 @@
1919
#include "qgsmaptooladvanceddigitizing.h"
2020
#include "qgis_app.h"
2121

22+
class QgsSnapIndicator;
23+
2224
//! Map tool for translating feature position by mouse drag
2325
class APP_EXPORT QgsMapToolMoveFeature: public QgsMapToolAdvancedDigitizing
2426
{
@@ -50,6 +52,9 @@ class APP_EXPORT QgsMapToolMoveFeature: public QgsMapToolAdvancedDigitizing
5052
//! Rubberband that shows the feature being moved
5153
QgsRubberBand *mRubberBand = nullptr;
5254

55+
//! Snapping indicators
56+
std::unique_ptr<QgsSnapIndicator> mSnapIndicator;
57+
5358
//! Id of moved feature
5459
QgsFeatureIds mMovedFeatures;
5560

0 commit comments

Comments
 (0)