Skip to content
Permalink
Browse files

Save layer changes on successful repair

when there are topology errors which are fixed subsequently, make sure that the layer can be saved again
  • Loading branch information
m-kuhn committed Dec 6, 2018
1 parent d9d4bd2 commit 10eb54776622299ab66f188976239aebbfe78848
Showing with 7 additions and 1 deletion.
  1. +3 −1 src/app/qgsgeometryvalidationservice.cpp
  2. +4 −0 src/app/qgsgeometryvalidationservice.h
@@ -145,7 +145,7 @@ void QgsGeometryValidationService::onFeatureDeleted( QgsVectorLayer *layer, QgsF

void QgsGeometryValidationService::onBeforeCommitChanges( QgsVectorLayer *layer )
{
if ( !mLayerChecks[layer].topologyChecks.empty() ) // TODO && topologyChecks not fulfilled
if ( !mBypassChecks && !mLayerChecks[layer].topologyChecks.empty() )
{
if ( !layer->allowCommit() )
{
@@ -461,7 +461,9 @@ void QgsGeometryValidationService::triggerTopologyChecks( QgsVectorLayer *layer
}
if ( allErrors.empty() && mLayerChecks[layer].singleFeatureCheckErrors.empty() && mLayerChecks[layer].commitPending )
{
mBypassChecks = true;
layer->commitChanges();
mBypassChecks = false;
mMessageBar->popWidget( mMessageBarItem );
mMessageBarItem = nullptr;
}
@@ -122,6 +122,10 @@ class QgsGeometryValidationService : public QObject
QgsMessageBar *mMessageBar = nullptr;
QgsMessageBarItem *mMessageBarItem = nullptr;

// when checks do complete successfully and changes need to be saved
// this variable is used to indicate that it's safe to bypass the checks
bool mBypassChecks = false;

};

#endif // QGSGEOMETRYVALIDATIONSERVICE_H

0 comments on commit 10eb547

Please sign in to comment.
You can’t perform that action at this time.