@@ -277,18 +277,12 @@ QgsVertexEditor::QgsVertexEditor(
277277 QgsVectorLayer *layer,
278278 QgsSelectedFeature *selectedFeature,
279279 QgsMapCanvas *canvas )
280- : mUpdatingTableSelection( false )
280+ : mCanvas( canvas )
281+ , mUpdatingTableSelection( false )
281282 , mUpdatingVertexSelection( false )
282283{
283284 setWindowTitle ( tr ( " Vertex Editor" ) );
284-
285- mLayer = layer;
286- mSelectedFeature = selectedFeature;
287- mCanvas = canvas;
288-
289285 mTableView = new QTableView ( this );
290- mVertexModel = new QgsVertexEditorModel ( mLayer , mSelectedFeature , mCanvas , this );
291- mTableView ->setModel ( mVertexModel );
292286
293287 mTableView ->setSelectionMode ( QTableWidget::ExtendedSelection );
294288 mTableView ->setSelectionBehavior ( QTableWidget::SelectRows );
@@ -300,8 +294,26 @@ QgsVertexEditor::QgsVertexEditor(
300294
301295 setWidget ( mTableView );
302296
303- connect ( mSelectedFeature , &QgsSelectedFeature::selectionChanged, this , &QgsVertexEditor::updateTableSelection );
304297 connect ( mTableView ->selectionModel (), &QItemSelectionModel::selectionChanged, this , &QgsVertexEditor::updateVertexSelection );
298+
299+ updateEditor ( layer, selectedFeature );
300+ }
301+
302+ void QgsVertexEditor::updateEditor ( QgsVectorLayer *layer, QgsSelectedFeature *selectedFeature )
303+ {
304+ if ( mVertexModel )
305+ {
306+ delete mVertexModel ;
307+ }
308+
309+ mLayer = layer;
310+ mSelectedFeature = selectedFeature;
311+
312+ // TOOD We really should just update the model itself.
313+ mVertexModel = new QgsVertexEditorModel ( mLayer , mSelectedFeature , mCanvas , this );
314+ mTableView ->setModel ( mVertexModel );
315+
316+ connect ( mSelectedFeature , &QgsSelectedFeature::selectionChanged, this , &QgsVertexEditor::updateTableSelection );
305317}
306318
307319void QgsVertexEditor::updateTableSelection ()
0 commit comments