Skip to content

Commit afd7e77

Browse files
committed
Recreate nodeeditor only if new feature has been selected
1 parent 863bf88 commit afd7e77

File tree

1 file changed

+12
-9
lines changed

1 file changed

+12
-9
lines changed

src/app/nodetool/qgsmaptoolnodetool.cpp

+12-9
Original file line numberDiff line numberDiff line change
@@ -86,15 +86,18 @@ void QgsMapToolNodeTool::canvasMapPressEvent( QgsMapMouseEvent* e )
8686
// remove previous warning
8787
emit messageDiscarded();
8888

89-
delete mSelectedFeature;
90-
mSelectedFeature = new QgsSelectedFeature( snapResults[0].snappedAtGeometry, vlayer, mCanvas );
91-
connect( QgisApp::instance()->layerTreeView(), SIGNAL( currentLayerChanged( QgsMapLayer* ) ), this, SLOT( currentLayerChanged( QgsMapLayer* ) ) );
92-
connect( mSelectedFeature, SIGNAL( destroyed() ), this, SLOT( selectedFeatureDestroyed() ) );
93-
connect( mSelectedFeature, SIGNAL( lastVertexChanged( const QgsPointV2& ) ), this, SLOT( changeLastVertex( const QgsPointV2& ) ) );
94-
connect( vlayer, SIGNAL( editingStopped() ), this, SLOT( editingToggled() ) );
95-
mIsPoint = vlayer->geometryType() == QGis::Point;
96-
mNodeEditor = new QgsNodeEditor( vlayer, mSelectedFeature, mCanvas );
97-
QgisApp::instance()->addDockWidget( Qt::LeftDockWidgetArea, mNodeEditor );
89+
if ( !mSelectedFeature || snapResults[0].snappedAtGeometry != mSelectedFeature->featureId() )
90+
{
91+
delete mSelectedFeature;
92+
mSelectedFeature = new QgsSelectedFeature( snapResults[0].snappedAtGeometry, vlayer, mCanvas );
93+
connect( QgisApp::instance()->layerTreeView(), SIGNAL( currentLayerChanged( QgsMapLayer* ) ), this, SLOT( currentLayerChanged( QgsMapLayer* ) ) );
94+
connect( mSelectedFeature, SIGNAL( destroyed() ), this, SLOT( selectedFeatureDestroyed() ) );
95+
connect( mSelectedFeature, SIGNAL( lastVertexChanged( const QgsPointV2& ) ), this, SLOT( changeLastVertex( const QgsPointV2& ) ) );
96+
connect( vlayer, SIGNAL( editingStopped() ), this, SLOT( editingToggled() ) );
97+
mIsPoint = vlayer->geometryType() == QGis::Point;
98+
mNodeEditor = new QgsNodeEditor( vlayer, mSelectedFeature, mCanvas );
99+
QgisApp::instance()->addDockWidget( Qt::LeftDockWidgetArea, mNodeEditor );
100+
}
98101
}
99102

100103
//select or move vertices if selected feature has not been changed

0 commit comments

Comments
 (0)