@@ -1337,6 +1337,8 @@ void QgsVertexTool::updateVertexEditor( QgsVectorLayer *layer, QgsFeatureId fid
13371337 mLockedFeature ->selectVertex ( mSelectedVertices .at ( i ).vertexId );
13381338 }
13391339 }
1340+
1341+ connect ( mLockedFeature .get (), &QgsLockedFeature::selectionChanged, this , &QgsVertexTool::lockedFeatureSelectionChanged );
13401342 }
13411343
13421344 // make sure the vertex editor is alive and visible
@@ -1372,6 +1374,25 @@ void QgsVertexTool::cleanupVertexEditor()
13721374 mVertexEditor .reset ();
13731375}
13741376
1377+ void QgsVertexTool::lockedFeatureSelectionChanged ()
1378+ {
1379+ Q_ASSERT ( mLockedFeature );
1380+ QList<QgsVertexEntry *> &vertexMap = mLockedFeature ->vertexMap ();
1381+ QList<Vertex> vertices;
1382+ for ( int i = 0 , n = vertexMap.size (); i < n; ++i )
1383+ {
1384+ if ( vertexMap[i]->isSelected () )
1385+ {
1386+ vertices << Vertex ( mLockedFeature ->layer (), mLockedFeature ->featureId (), i );
1387+ }
1388+ }
1389+
1390+ disconnect ( mLockedFeature .get (), &QgsLockedFeature::selectionChanged, this , &QgsVertexTool::lockedFeatureSelectionChanged );
1391+ setHighlightedVertices ( vertices, ModeReset );
1392+ connect ( mLockedFeature .get (), &QgsLockedFeature::selectionChanged, this , &QgsVertexTool::lockedFeatureSelectionChanged );
1393+
1394+ }
1395+
13751396static int _firstSelectedVertex ( QgsLockedFeature &selectedFeature )
13761397{
13771398 QList<QgsVertexEntry *> &vertexMap = selectedFeature.vertexMap ();
@@ -2288,6 +2309,18 @@ void QgsVertexTool::setHighlightedVertices( const QList<Vertex> &listVertices, H
22882309 createMarkerForVertex ( vertex );
22892310 }
22902311 }
2312+
2313+ if ( mLockedFeature )
2314+ {
2315+ for ( const Vertex &vertex : qgis::as_const ( mSelectedVertices ) )
2316+ {
2317+ if ( mLockedFeature ->featureId () != vertex.fid || mLockedFeature ->layer () != vertex.layer )
2318+ continue ;
2319+
2320+ if ( mVertexEditor )
2321+ mVertexEditor ->updateEditor ( mLockedFeature .get () );
2322+ }
2323+ }
22912324}
22922325
22932326void QgsVertexTool::setHighlightedVerticesVisible ( bool visible )
0 commit comments