Skip to content

Commit eb5d487

Browse files
authoredNov 2, 2018
Merge pull request #8402 from m-kuhn/autoActivateGeometryValidation
Activate geometry checks when changing layer properties
2 parents 8400a8b + 7fb8579 commit eb5d487

File tree

1 file changed

+10
-0
lines changed

1 file changed

+10
-0
lines changed
 

‎src/app/qgsgeometryvalidationservice.cpp

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -88,6 +88,11 @@ void QgsGeometryValidationService::onLayersAdded( const QList<QgsMapLayer *> &la
8888
enableLayerChecks( vectorLayer );
8989
} );
9090

91+
connect( vectorLayer->geometryOptions(), &QgsGeometryOptions::geometryChecksChanged, this, [this, vectorLayer]()
92+
{
93+
enableLayerChecks( vectorLayer );
94+
} );
95+
9196
connect( vectorLayer, &QgsVectorLayer::destroyed, this, [vectorLayer, this]()
9297
{
9398
cleanupLayerChecks( vectorLayer );
@@ -175,9 +180,12 @@ void QgsGeometryValidationService::cleanupLayerChecks( QgsVectorLayer *layer )
175180
VectorLayerCheckInformation &checkInformation = mLayerChecks[layer];
176181

177182
cancelTopologyCheck( layer );
183+
clearTopologyChecks( layer );
178184

179185
qDeleteAll( checkInformation.singleFeatureChecks );
186+
checkInformation.singleFeatureChecks.clear();
180187
qDeleteAll( checkInformation.topologyChecks );
188+
checkInformation.topologyChecks.clear();
181189
checkInformation.context.reset();
182190
}
183191

@@ -315,6 +323,7 @@ void QgsGeometryValidationService::clearTopologyChecks( QgsVectorLayer *layer )
315323
{
316324
QList<std::shared_ptr<QgsGeometryCheckError>> &allErrors = mLayerChecks[layer].topologyCheckErrors;
317325
allErrors.clear();
326+
layer->setAllowCommit( mLayerChecks[layer].singleFeatureCheckErrors.empty() );
318327

319328
emit topologyChecksCleared( layer );
320329
}
@@ -363,6 +372,7 @@ void QgsGeometryValidationService::triggerTopologyChecks( QgsVectorLayer *layer
363372
{
364373
cancelTopologyCheck( layer );
365374
clearTopologyChecks( layer );
375+
layer->setAllowCommit( false );
366376

367377
QgsFeatureIds affectedFeatureIds;
368378
if ( layer->editBuffer() )

0 commit comments

Comments
 (0)
Please sign in to comment.