@@ -212,13 +212,15 @@ void QgsMapToolNodeTool::canvasPressEvent( QgsMapMouseEvent* e )
212212 // remove previous warning
213213 emit messageDiscarded ();
214214 mSelectedFeature = new QgsSelectedFeature ( feature.id (), vlayer, mCanvas );
215+ updateSelectFeature ();
215216 }
216217 }
217218 else {
218219 // remove previous warning
219220 emit messageDiscarded ();
220221
221222 mSelectedFeature = new QgsSelectedFeature ( snapResults[0 ].snappedAtGeometry , vlayer, mCanvas );
223+ updateSelectFeature ();
222224 }
223225 connect ( QgisApp::instance ()->layerTreeView (), SIGNAL ( currentLayerChanged ( QgsMapLayer* ) ), this , SLOT ( currentLayerChanged ( QgsMapLayer* ) ) );
224226 connect ( mSelectedFeature , SIGNAL ( destroyed () ), this , SLOT ( selectedFeatureDestroyed () ) );
@@ -350,6 +352,21 @@ void QgsMapToolNodeTool::canvasPressEvent( QgsMapMouseEvent* e )
350352 }
351353}
352354
355+ void QgsMapToolNodeTool::updateSelectFeature ()
356+ {
357+ if (mSelectRubberBand != NULL ) {
358+ delete mSelectRubberBand ;
359+ }
360+ mSelectRubberBand = new QgsGeometryRubberBand ( mCanvas , mSelectedFeature ->geometry ()->type () );
361+ mSelectRubberBand ->setBrushStyle ( Qt::SolidPattern );
362+ mSelectRubberBand ->setFillColor ( QColor ( 255 , 0 , 0 , 50 ) );
363+ QgsAbstractGeometryV2* rbGeom = mSelectedFeature ->geometry ()->geometry ()->clone ();
364+ QgsVectorLayer *vlayer = mSelectedFeature ->vlayer ();
365+ if ( mCanvas ->mapSettings ().layerTransform ( vlayer ) )
366+ rbGeom->transform ( *mCanvas ->mapSettings ().layerTransform ( vlayer ) );
367+ mSelectRubberBand ->setGeometry ( rbGeom );
368+ }
369+
353370void QgsMapToolNodeTool::selectedFeatureDestroyed ()
354371{
355372 QgsDebugCall;
@@ -396,6 +413,7 @@ void QgsMapToolNodeTool::canvasReleaseEvent( QgsMapMouseEvent* e )
396413 {
397414 // select another feature
398415 mSelectedFeature ->setSelectedFeature ( mAnother , vlayer, mCanvas );
416+ updateSelectFeature ();
399417 mIsPoint = vlayer->geometryType () == QGis::Point;
400418 mSelectAnother = false ;
401419 }
@@ -494,6 +512,10 @@ void QgsMapToolNodeTool::cleanTool( bool deleteSelectedFeature )
494512{
495513 removeRubberBands ();
496514
515+ if ( mSelectRubberBand != NULL ) {
516+ delete mSelectRubberBand ;
517+ mSelectRubberBand = NULL ;
518+ }
497519 if ( mSelectedFeature )
498520 {
499521 QgsVectorLayer *vlayer = mSelectedFeature ->vlayer ();
@@ -504,7 +526,7 @@ void QgsMapToolNodeTool::cleanTool( bool deleteSelectedFeature )
504526 disconnect ( vlayer, SIGNAL ( editingStopped () ), this , SLOT ( editingToggled () ) );
505527
506528 if ( deleteSelectedFeature ) delete mSelectedFeature ;
507- mSelectedFeature = 0 ;
529+ mSelectedFeature = NULL ;
508530 }
509531 if ( mNodeEditor )
510532 {
0 commit comments