Skip to content

Commit d73ef5b

Browse files
committedNov 7, 2015
Highlight the selected feature
1 parent 580f70a commit d73ef5b

File tree

2 files changed

+31
-1
lines changed

2 files changed

+31
-1
lines changed
 

‎src/app/nodetool/qgsmaptoolnodetool.cpp

Lines changed: 23 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -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+
353370
void 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
{

‎src/app/nodetool/qgsmaptoolnodetool.h

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -66,6 +66,11 @@ class QgsMapToolNodeTool: public QgsMapToolEdit
6666
*/
6767
QgsFeature getFeatureAtPoint( QgsMapMouseEvent* e );
6868

69+
/**
70+
* Update select feature rubber band
71+
*/
72+
void updateSelectFeature();
73+
6974
/**
7075
* Deletes the rubber band pointers and clears mRubberBands
7176
*/
@@ -121,6 +126,9 @@ class QgsMapToolNodeTool: public QgsMapToolEdit
121126
/** Rubber bands during node move */
122127
QMap<QgsFeatureId, QgsGeometryRubberBand*> mMoveRubberBands;
123128

129+
/** Rubber band for selected feature */
130+
QgsGeometryRubberBand* mSelectRubberBand;
131+
124132
/** Vertices of features to move */
125133
QMap<QgsFeatureId, QList< QPair<QgsVertexId, QgsPointV2> > > mMoveVertices;
126134

0 commit comments

Comments
 (0)
Failed to load comments.