@@ -88,6 +88,11 @@ void QgsGeometryValidationService::onLayersAdded( const QList<QgsMapLayer *> &la
88
88
enableLayerChecks ( vectorLayer );
89
89
} );
90
90
91
+ connect ( vectorLayer->geometryOptions (), &QgsGeometryOptions::geometryChecksChanged, this , [this , vectorLayer]()
92
+ {
93
+ enableLayerChecks ( vectorLayer );
94
+ } );
95
+
91
96
connect ( vectorLayer, &QgsVectorLayer::destroyed, this , [vectorLayer, this ]()
92
97
{
93
98
cleanupLayerChecks ( vectorLayer );
@@ -175,9 +180,12 @@ void QgsGeometryValidationService::cleanupLayerChecks( QgsVectorLayer *layer )
175
180
VectorLayerCheckInformation &checkInformation = mLayerChecks [layer];
176
181
177
182
cancelTopologyCheck ( layer );
183
+ clearTopologyChecks ( layer );
178
184
179
185
qDeleteAll ( checkInformation.singleFeatureChecks );
186
+ checkInformation.singleFeatureChecks .clear ();
180
187
qDeleteAll ( checkInformation.topologyChecks );
188
+ checkInformation.topologyChecks .clear ();
181
189
checkInformation.context .reset ();
182
190
}
183
191
@@ -315,6 +323,7 @@ void QgsGeometryValidationService::clearTopologyChecks( QgsVectorLayer *layer )
315
323
{
316
324
QList<std::shared_ptr<QgsGeometryCheckError>> &allErrors = mLayerChecks [layer].topologyCheckErrors ;
317
325
allErrors.clear ();
326
+ layer->setAllowCommit ( mLayerChecks [layer].singleFeatureCheckErrors .empty () );
318
327
319
328
emit topologyChecksCleared ( layer );
320
329
}
@@ -363,6 +372,7 @@ void QgsGeometryValidationService::triggerTopologyChecks( QgsVectorLayer *layer
363
372
{
364
373
cancelTopologyCheck ( layer );
365
374
clearTopologyChecks ( layer );
375
+ layer->setAllowCommit ( false );
366
376
367
377
QgsFeatureIds affectedFeatureIds;
368
378
if ( layer->editBuffer () )
0 commit comments