Skip to content

Commit 060fe96

Browse files
committed
[vertex tool] fix editor not updated on geometry changed
slots were not triggered in appropriate order so we let the vertex tool handle the update of the locked feature geometry on update
1 parent a775325 commit 060fe96

File tree

2 files changed

+13
-11
lines changed

2 files changed

+13
-11
lines changed

src/app/vertextool/qgslockedfeature.cpp

-9
Original file line numberDiff line numberDiff line change
@@ -42,15 +42,6 @@ QgsLockedFeature::QgsLockedFeature( QgsFeatureId featureId,
4242
// signal changing of current layer
4343
connect( QgisApp::instance()->layerTreeView(), &QgsLayerTreeView::currentLayerChanged, this, &QgsLockedFeature::currentLayerChanged );
4444

45-
// feature was deleted
46-
connect( mLayer, &QgsVectorLayer::featureDeleted, this, &QgsLockedFeature::featureDeleted );
47-
48-
// rolling back
49-
connect( mLayer, &QgsVectorLayer::beforeRollBack, this, &QgsLockedFeature::beforeRollBack );
50-
51-
// geometry was changed
52-
connect( mLayer, &QgsVectorLayer::geometryChanged, this, &QgsLockedFeature::geometryChanged );
53-
5445
replaceVertexMap();
5546
}
5647

src/app/vertextool/qgsvertextool.cpp

+13-2
Original file line numberDiff line numberDiff line change
@@ -1304,8 +1304,13 @@ void QgsVertexTool::onCachedGeometryChanged( QgsFeatureId fid, const QgsGeometry
13041304
// re-run validation for the feature
13051305
validateGeometry( layer, fid );
13061306

1307-
if ( mVertexEditor && mLockedFeature && mLockedFeature->featureId() == fid && mLockedFeature->layer() == layer )
1308-
mVertexEditor->updateEditor( mLockedFeature.get() );
1307+
if ( mLockedFeature && mLockedFeature->featureId() == fid && mLockedFeature->layer() == layer )
1308+
{
1309+
mLockedFeature->geometryChanged( fid, geom );
1310+
if ( mVertexEditor )
1311+
mVertexEditor->updateEditor( mLockedFeature.get() );
1312+
updateLockedFeatureVertices();
1313+
}
13091314
}
13101315

13111316
void QgsVertexTool::onCachedGeometryDeleted( QgsFeatureId fid )
@@ -1318,6 +1323,12 @@ void QgsVertexTool::onCachedGeometryDeleted( QgsFeatureId fid )
13181323

13191324
// refresh highlighted vertices - some may have been deleted
13201325
setHighlightedVertices( mSelectedVertices );
1326+
1327+
if ( mLockedFeature && mLockedFeature->featureId() == fid && mLockedFeature->layer() == layer )
1328+
{
1329+
mLockedFeature->featureDeleted( fid );
1330+
updateLockedFeatureVertices();
1331+
}
13211332
}
13221333

13231334
void QgsVertexTool::updateVertexEditor( QgsVectorLayer *layer, QgsFeatureId fid )

0 commit comments

Comments
 (0)