Skip to content

Commit

Permalink
Allow QgsMapToolCapture subclasses to bypass geometry validation
Browse files Browse the repository at this point in the history
  • Loading branch information
nyalldawson committed Sep 8, 2021
1 parent e7ce050 commit ec9d526
Show file tree
Hide file tree
Showing 5 changed files with 10 additions and 6 deletions.
1 change: 1 addition & 0 deletions python/gui/auto_generated/qgsmaptoolcapture.sip.in
Expand Up @@ -40,6 +40,7 @@ class QgsMapToolCapture : QgsMapToolAdvancedDigitizing
{
NoCapabilities,
SupportsCurves,
ValidateGeometries,
};

typedef QFlags<QgsMapToolCapture::Capability> Capabilities;
Expand Down
2 changes: 1 addition & 1 deletion src/app/qgsmaptooladdpart.cpp
Expand Up @@ -37,7 +37,7 @@ QgsMapToolAddPart::QgsMapToolAddPart( QgsMapCanvas *canvas )

QgsMapToolCapture::Capabilities QgsMapToolAddPart::capabilities() const
{
return QgsMapToolCapture::SupportsCurves;
return QgsMapToolCapture::SupportsCurves | QgsMapToolCapture::ValidateGeometries;
}

bool QgsMapToolAddPart::supportsTechnique( QgsMapToolCapture::CaptureTechnique technique ) const
Expand Down
6 changes: 4 additions & 2 deletions src/gui/qgsmaptoolcapture.cpp
Expand Up @@ -90,7 +90,7 @@ QgsMapToolCapture::~QgsMapToolCapture()

QgsMapToolCapture::Capabilities QgsMapToolCapture::capabilities() const
{
return QgsMapToolCapture::NoCapabilities;
return QgsMapToolCapture::ValidateGeometries;
}

bool QgsMapToolCapture::supportsTechnique( QgsMapToolCapture::CaptureTechnique technique ) const
Expand Down Expand Up @@ -872,7 +872,9 @@ QgsMapLayer *QgsMapToolCapture::layer() const

void QgsMapToolCapture::validateGeometry()
{
if ( QgsSettingsRegistryCore::settingsDigitizingValidateGeometries.value() == 0 )
if ( QgsSettingsRegistryCore::settingsDigitizingValidateGeometries.value() == 0
|| !( capabilities() & ValidateGeometries )
)
return;

if ( mValidator )
Expand Down
5 changes: 3 additions & 2 deletions src/gui/qgsmaptoolcapture.h
Expand Up @@ -149,8 +149,9 @@ class GUI_EXPORT QgsMapToolCapture : public QgsMapToolAdvancedDigitizing
//! Specific capabilities of the tool
enum Capability
{
NoCapabilities = 0, //!< No specific capabilities
SupportsCurves = 1, //!< Supports curved geometries input
NoCapabilities = 1 << 0, //!< No specific capabilities
SupportsCurves = 1 << 1, //!< Supports curved geometries input
ValidateGeometries = 1 << 2, //!< Tool supports geometry validation (since QGIS 3.22)
};

Q_DECLARE_FLAGS( Capabilities, Capability )
Expand Down
2 changes: 1 addition & 1 deletion src/gui/qgsmaptooldigitizefeature.cpp
Expand Up @@ -45,7 +45,7 @@ QgsMapToolDigitizeFeature::QgsMapToolDigitizeFeature( QgsMapCanvas *canvas, QgsA

QgsMapToolCapture::Capabilities QgsMapToolDigitizeFeature::capabilities() const
{
return QgsMapToolCapture::SupportsCurves;
return QgsMapToolCapture::SupportsCurves | QgsMapToolCapture::ValidateGeometries;
}

bool QgsMapToolDigitizeFeature::supportsTechnique( QgsMapToolCapture::CaptureTechnique technique ) const
Expand Down

0 comments on commit ec9d526

Please sign in to comment.