diff --git a/python/core/processing/qgsprocessingcontext.sip b/python/core/processing/qgsprocessingcontext.sip index ffce3c11ea1..62c6c77db89 100644 --- a/python/core/processing/qgsprocessingcontext.sip +++ b/python/core/processing/qgsprocessingcontext.sip @@ -72,14 +72,20 @@ class QgsProcessingContext Sets the expression ``context``. %End + QgsFeatureRequest::InvalidGeometryCheck invalidGeometryCheck() const; +%Docstring + Returns the behavior used for checking invalid geometries in input layers. + \see setInvalidGeometryCheck() + :rtype: QgsFeatureRequest.InvalidGeometryCheck +%End + + void setInvalidGeometryCheck( const QgsFeatureRequest::InvalidGeometryCheck &check ); +%Docstring + Sets the behavior used for checking invalid geometries in input layers. + \see invalidGeometryCheck() +%End + }; - - - - - - - QFlags operator|(QgsProcessingContext::Flag f1, QFlags f2); diff --git a/python/plugins/processing/tools/general.py b/python/plugins/processing/tools/general.py index 4103015e081..610f79c138c 100644 --- a/python/plugins/processing/tools/general.py +++ b/python/plugins/processing/tools/general.py @@ -108,4 +108,7 @@ def createContext(): if use_selection: context.setFlags(QgsProcessingContext.UseSelection) + invalid_features_method = ProcessingConfig.getSetting(ProcessingConfig.FILTER_INVALID_GEOMETRIES) + context.setInvalidGeometryCheck(invalid_features_method) + return context diff --git a/src/core/processing/qgsprocessingcontext.h b/src/core/processing/qgsprocessingcontext.h index 0e371ba1637..16a8b7f6231 100644 --- a/src/core/processing/qgsprocessingcontext.h +++ b/src/core/processing/qgsprocessingcontext.h @@ -22,6 +22,7 @@ #include "qgis.h" #include "qgsproject.h" #include "qgsexpressioncontext.h" +#include "qgsfeaturerequest.h" /** * \class QgsProcessingContext @@ -80,22 +81,26 @@ class CORE_EXPORT QgsProcessingContext */ void setExpressionContext( const QgsExpressionContext &context ) { mExpressionContext = context; } + /** + * Returns the behavior used for checking invalid geometries in input layers. + * \see setInvalidGeometryCheck() + */ + QgsFeatureRequest::InvalidGeometryCheck invalidGeometryCheck() const { return mInvalidGeometryCheck; } + + /** + * Sets the behavior used for checking invalid geometries in input layers. + * \see invalidGeometryCheck() + */ + void setInvalidGeometryCheck( const QgsFeatureRequest::InvalidGeometryCheck &check ) { mInvalidGeometryCheck = check; } + private: QgsProcessingContext::Flags mFlags = 0; - QPointer< QgsProject > mProject; - QgsExpressionContext mExpressionContext; + QgsFeatureRequest::InvalidGeometryCheck mInvalidGeometryCheck = QgsFeatureRequest::GeometryNoCheck; }; - - - - - - - Q_DECLARE_OPERATORS_FOR_FLAGS( QgsProcessingContext::Flags ) #endif // QGSPROCESSINGPARAMETERS_H