Skip to content

Commit ec9d526

Browse files
committedSep 8, 2021
Allow QgsMapToolCapture subclasses to bypass geometry validation
1 parent e7ce050 commit ec9d526

File tree

5 files changed

+10
-6
lines changed

5 files changed

+10
-6
lines changed
 

‎python/gui/auto_generated/qgsmaptoolcapture.sip.in

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,7 @@ class QgsMapToolCapture : QgsMapToolAdvancedDigitizing
4040
{
4141
NoCapabilities,
4242
SupportsCurves,
43+
ValidateGeometries,
4344
};
4445

4546
typedef QFlags<QgsMapToolCapture::Capability> Capabilities;

‎src/app/qgsmaptooladdpart.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ QgsMapToolAddPart::QgsMapToolAddPart( QgsMapCanvas *canvas )
3737

3838
QgsMapToolCapture::Capabilities QgsMapToolAddPart::capabilities() const
3939
{
40-
return QgsMapToolCapture::SupportsCurves;
40+
return QgsMapToolCapture::SupportsCurves | QgsMapToolCapture::ValidateGeometries;
4141
}
4242

4343
bool QgsMapToolAddPart::supportsTechnique( QgsMapToolCapture::CaptureTechnique technique ) const

‎src/gui/qgsmaptoolcapture.cpp

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -90,7 +90,7 @@ QgsMapToolCapture::~QgsMapToolCapture()
9090

9191
QgsMapToolCapture::Capabilities QgsMapToolCapture::capabilities() const
9292
{
93-
return QgsMapToolCapture::NoCapabilities;
93+
return QgsMapToolCapture::ValidateGeometries;
9494
}
9595

9696
bool QgsMapToolCapture::supportsTechnique( QgsMapToolCapture::CaptureTechnique technique ) const
@@ -872,7 +872,9 @@ QgsMapLayer *QgsMapToolCapture::layer() const
872872

873873
void QgsMapToolCapture::validateGeometry()
874874
{
875-
if ( QgsSettingsRegistryCore::settingsDigitizingValidateGeometries.value() == 0 )
875+
if ( QgsSettingsRegistryCore::settingsDigitizingValidateGeometries.value() == 0
876+
|| !( capabilities() & ValidateGeometries )
877+
)
876878
return;
877879

878880
if ( mValidator )

‎src/gui/qgsmaptoolcapture.h

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -149,8 +149,9 @@ class GUI_EXPORT QgsMapToolCapture : public QgsMapToolAdvancedDigitizing
149149
//! Specific capabilities of the tool
150150
enum Capability
151151
{
152-
NoCapabilities = 0, //!< No specific capabilities
153-
SupportsCurves = 1, //!< Supports curved geometries input
152+
NoCapabilities = 1 << 0, //!< No specific capabilities
153+
SupportsCurves = 1 << 1, //!< Supports curved geometries input
154+
ValidateGeometries = 1 << 2, //!< Tool supports geometry validation (since QGIS 3.22)
154155
};
155156

156157
Q_DECLARE_FLAGS( Capabilities, Capability )

‎src/gui/qgsmaptooldigitizefeature.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,7 @@ QgsMapToolDigitizeFeature::QgsMapToolDigitizeFeature( QgsMapCanvas *canvas, QgsA
4545

4646
QgsMapToolCapture::Capabilities QgsMapToolDigitizeFeature::capabilities() const
4747
{
48-
return QgsMapToolCapture::SupportsCurves;
48+
return QgsMapToolCapture::SupportsCurves | QgsMapToolCapture::ValidateGeometries;
4949
}
5050

5151
bool QgsMapToolDigitizeFeature::supportsTechnique( QgsMapToolCapture::CaptureTechnique technique ) const

0 commit comments

Comments
 (0)
Please sign in to comment.