Skip to content

Commit 510f5cb

Browse files
committed
Fix #8561 - Handle change layer in node tool
1 parent 5329ad5 commit 510f5cb

File tree

2 files changed

+19
-0
lines changed

2 files changed

+19
-0
lines changed

src/app/nodetool/qgsmaptoolnodetool.cpp

+14
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,8 @@
2323
#include "qgsrubberband.h"
2424
#include "qgsvectorlayer.h"
2525
#include "qgslogger.h"
26+
#include "qgisapp.h"
27+
#include "qgslegend.h"
2628

2729
#include <QMouseEvent>
2830
#include <QRubberBand>
@@ -369,6 +371,7 @@ void QgsMapToolNodeTool::canvasPressEvent( QMouseEvent * e )
369371
}
370372

371373
mSelectedFeature = new QgsSelectedFeature( snapResults[0].snappedAtGeometry, vlayer, mCanvas );
374+
connect( QgisApp::instance()->legend(), SIGNAL( currentLayerChanged( QgsMapLayer* ) ), this, SLOT( currentLayerChanged( QgsMapLayer* ) ) );
372375
connect( mSelectedFeature, SIGNAL( destroyed() ), this, SLOT( selectedFeatureDestroyed() ) );
373376
mIsPoint = vlayer->geometryType() == QGis::Point;
374377
}
@@ -489,6 +492,17 @@ void QgsMapToolNodeTool::selectedFeatureDestroyed()
489492
mSelectedFeature = 0;
490493
}
491494

495+
void QgsMapToolNodeTool::currentLayerChanged( QgsMapLayer *layer )
496+
{
497+
if ( mSelectedFeature && layer != mSelectedFeature->vlayer() )
498+
{
499+
delete mSelectedFeature;
500+
mSelectedFeature = 0;
501+
502+
removeRubberBands();
503+
}
504+
}
505+
492506
void QgsMapToolNodeTool::canvasReleaseEvent( QMouseEvent * e )
493507
{
494508
if ( !mSelectedFeature )

src/app/nodetool/qgsmaptoolnodetool.h

+5
Original file line numberDiff line numberDiff line change
@@ -55,6 +55,11 @@ class QgsMapToolNodeTool: public QgsMapToolVertexEdit
5555
public slots:
5656
void selectedFeatureDestroyed();
5757

58+
/*
59+
* the current layer changed
60+
*/
61+
void currentLayerChanged( QgsMapLayer *layer );
62+
5863
private:
5964
/**
6065
* Deletes the rubber band pointers and clears mRubberBands

0 commit comments

Comments
 (0)