Skip to content

Commit

Permalink
Fix #8561 - Handle change layer in node tool
Browse files Browse the repository at this point in the history
  • Loading branch information
NathanW2 committed Sep 3, 2013
1 parent 5329ad5 commit 510f5cb
Show file tree
Hide file tree
Showing 2 changed files with 19 additions and 0 deletions.
14 changes: 14 additions & 0 deletions src/app/nodetool/qgsmaptoolnodetool.cpp
Expand Up @@ -23,6 +23,8 @@
#include "qgsrubberband.h"
#include "qgsvectorlayer.h"
#include "qgslogger.h"
#include "qgisapp.h"
#include "qgslegend.h"

#include <QMouseEvent>
#include <QRubberBand>
Expand Down Expand Up @@ -369,6 +371,7 @@ void QgsMapToolNodeTool::canvasPressEvent( QMouseEvent * e )
}

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

void QgsMapToolNodeTool::currentLayerChanged( QgsMapLayer *layer )
{
if ( mSelectedFeature && layer != mSelectedFeature->vlayer() )
{
delete mSelectedFeature;
mSelectedFeature = 0;

removeRubberBands();
}
}

void QgsMapToolNodeTool::canvasReleaseEvent( QMouseEvent * e )
{
if ( !mSelectedFeature )
Expand Down
5 changes: 5 additions & 0 deletions src/app/nodetool/qgsmaptoolnodetool.h
Expand Up @@ -55,6 +55,11 @@ class QgsMapToolNodeTool: public QgsMapToolVertexEdit
public slots:
void selectedFeatureDestroyed();

/*
* the current layer changed
*/
void currentLayerChanged( QgsMapLayer *layer );

private:
/**
* Deletes the rubber band pointers and clears mRubberBands
Expand Down

0 comments on commit 510f5cb

Please sign in to comment.