Skip to content

Commit 0b60e0f

Browse files
YoannQDQlbartoletti
authored andcommitted
Auto enable snapping when using the trim/extent tool
1 parent 61a27e0 commit 0b60e0f

File tree

2 files changed

+24
-0
lines changed

2 files changed

+24
-0
lines changed

src/app/qgsmaptooltrimextendfeature.cpp

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -387,8 +387,25 @@ void QgsMapToolTrimExtendFeature::reset()
387387
mVlayer = nullptr;
388388
mLimitLayer = nullptr;
389389
}
390+
void QgsMapToolTrimExtendFeature::activate()
391+
{
392+
QgsMapTool::activate();
393+
394+
// Save the original snapping configuration
395+
mOriginalSnappingConfig = mCanvas->snappingUtils()->config();
396+
397+
// Enable Snapping & Snapping on Segment
398+
QgsSnappingConfig snappingConfig = mOriginalSnappingConfig;
399+
snappingConfig.setEnabled( true );
400+
Qgis::SnappingTypes flags = snappingConfig.typeFlag();
401+
flags |= Qgis::SnappingType::Segment;
402+
snappingConfig.setTypeFlag( flags );
403+
mCanvas->snappingUtils()->setConfig( snappingConfig );
404+
}
390405
void QgsMapToolTrimExtendFeature::deactivate()
391406
{
392407
reset();
408+
// Restore the original snapping configuration
409+
mCanvas->snappingUtils()->setConfig( mOriginalSnappingConfig );
393410
QgsMapTool::deactivate();
394411
}

src/app/qgsmaptooltrimextendfeature.h

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@
1919
#include "qgsmaptooledit.h"
2020
#include "qgis_app.h"
2121
#include "qgsrubberband.h"
22+
#include "qgssnappingconfig.h"
2223

2324
class APP_EXPORT QgsMapToolTrimExtendFeature : public QgsMapToolEdit
2425
{
@@ -35,6 +36,9 @@ class APP_EXPORT QgsMapToolTrimExtendFeature : public QgsMapToolEdit
3536

3637
void keyPressEvent( QKeyEvent *e ) override;
3738

39+
//! called when map tool is being activated
40+
void activate() override;
41+
3842
//! called when map tool is being deactivated
3943
void deactivate() override;
4044

@@ -81,6 +85,9 @@ class APP_EXPORT QgsMapToolTrimExtendFeature : public QgsMapToolEdit
8185
};
8286
//! The first step (0): choose the limit. The second step (1): choose the segment to trim/extend
8387
Step mStep = StepLimit;
88+
89+
//! Snapping config that will be restored on deactivation
90+
QgsSnappingConfig mOriginalSnappingConfig;
8491
};
8592

8693
#endif // QGSMAPTOOLTRIMEXTENDFEATURE_H

0 commit comments

Comments
 (0)