diff --git a/src/app/qgsgeometryvalidationservice.cpp b/src/app/qgsgeometryvalidationservice.cpp index 72a14b723807..24781dfff716 100644 --- a/src/app/qgsgeometryvalidationservice.cpp +++ b/src/app/qgsgeometryvalidationservice.cpp @@ -133,12 +133,16 @@ void QgsGeometryValidationService::onGeometryChanged( QgsVectorLayer *layer, Qgs void QgsGeometryValidationService::onFeatureDeleted( QgsVectorLayer *layer, QgsFeatureId fid ) { + mLayerChecks[layer].singleFeatureCheckErrors.remove( fid ); + if ( !mLayerChecks[layer].topologyChecks.empty() ) { invalidateTopologyChecks( layer ); } - - mLayerChecks[layer].singleFeatureCheckErrors.remove( fid ); + else + { + layer->setAllowCommit( mLayerChecks[layer].singleFeatureCheckErrors.empty() ); + } // There should be no geometry errors on a non-existent feature, right? emit geometryCheckCompleted( layer, fid, QList>() ); @@ -461,9 +465,13 @@ void QgsGeometryValidationService::triggerTopologyChecks( QgsVectorLayer *layer, if ( !allErrors.empty() || !mLayerChecks[layer].singleFeatureCheckErrors.empty() ) { if ( mLayerChecks[layer].commitPending ) + { showMessage( tr( "Geometry errors have been found. Please fix the errors before saving the layer." ) ); + } else + { showMessage( tr( "Geometry errors have been found." ) ); + } } if ( allErrors.empty() && mLayerChecks[layer].singleFeatureCheckErrors.empty() && mLayerChecks[layer].commitPending ) {