@@ -212,13 +212,15 @@ void QgsMapToolNodeTool::canvasPressEvent( QgsMapMouseEvent* e )
212
212
// remove previous warning
213
213
emit messageDiscarded ();
214
214
mSelectedFeature = new QgsSelectedFeature ( feature.id (), vlayer, mCanvas );
215
+ updateSelectFeature ();
215
216
}
216
217
}
217
218
else {
218
219
// remove previous warning
219
220
emit messageDiscarded ();
220
221
221
222
mSelectedFeature = new QgsSelectedFeature ( snapResults[0 ].snappedAtGeometry , vlayer, mCanvas );
223
+ updateSelectFeature ();
222
224
}
223
225
connect ( QgisApp::instance ()->layerTreeView (), SIGNAL ( currentLayerChanged ( QgsMapLayer* ) ), this , SLOT ( currentLayerChanged ( QgsMapLayer* ) ) );
224
226
connect ( mSelectedFeature , SIGNAL ( destroyed () ), this , SLOT ( selectedFeatureDestroyed () ) );
@@ -350,6 +352,21 @@ void QgsMapToolNodeTool::canvasPressEvent( QgsMapMouseEvent* e )
350
352
}
351
353
}
352
354
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
+
353
370
void QgsMapToolNodeTool::selectedFeatureDestroyed ()
354
371
{
355
372
QgsDebugCall;
@@ -396,6 +413,7 @@ void QgsMapToolNodeTool::canvasReleaseEvent( QgsMapMouseEvent* e )
396
413
{
397
414
// select another feature
398
415
mSelectedFeature ->setSelectedFeature ( mAnother , vlayer, mCanvas );
416
+ updateSelectFeature ();
399
417
mIsPoint = vlayer->geometryType () == QGis::Point;
400
418
mSelectAnother = false ;
401
419
}
@@ -494,6 +512,10 @@ void QgsMapToolNodeTool::cleanTool( bool deleteSelectedFeature )
494
512
{
495
513
removeRubberBands ();
496
514
515
+ if ( mSelectRubberBand != NULL ) {
516
+ delete mSelectRubberBand ;
517
+ mSelectRubberBand = NULL ;
518
+ }
497
519
if ( mSelectedFeature )
498
520
{
499
521
QgsVectorLayer *vlayer = mSelectedFeature ->vlayer ();
@@ -504,7 +526,7 @@ void QgsMapToolNodeTool::cleanTool( bool deleteSelectedFeature )
504
526
disconnect ( vlayer, SIGNAL ( editingStopped () ), this , SLOT ( editingToggled () ) );
505
527
506
528
if ( deleteSelectedFeature ) delete mSelectedFeature ;
507
- mSelectedFeature = 0 ;
529
+ mSelectedFeature = NULL ;
508
530
}
509
531
if ( mNodeEditor )
510
532
{
0 commit comments