Skip to content

Commit 68c49fe

Browse files
committedSep 22, 2014
Fix performance issues with moving selection on canvas (Funded by good will)
Fix #11197
1 parent 96e39f7 commit 68c49fe

File tree

2 files changed

+9
-5
lines changed

2 files changed

+9
-5
lines changed
 

‎src/app/qgsmaptoolmovefeature.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -120,9 +120,9 @@ void QgsMapToolMoveFeature::canvasPressEvent( QMouseEvent * e )
120120
mMovedFeatures = vlayer->selectedFeaturesIds();
121121

122122
mRubberBand = createRubberBand( vlayer->geometryType() );
123-
for ( int i = 0; i < vlayer->selectedFeatureCount(); i++ )
123+
Q_FOREACH( const QgsFeature& feat, vlayer->selectedFeatures() )
124124
{
125-
mRubberBand->addGeometry( vlayer->selectedFeatures()[i].geometry(), vlayer );
125+
mRubberBand->addGeometry( feat.geometry(), vlayer );
126126
}
127127
}
128128

‎src/core/qgsvectorlayer.cpp

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2305,10 +2305,14 @@ QgsFeatureList QgsVectorLayer::selectedFeatures()
23052305
if ( geometryType() == QGis::NoGeometry )
23062306
req.setFlags( QgsFeatureRequest::NoGeometry );
23072307

2308-
foreach ( QgsFeatureId fid, mSelectedFeatureIds )
2308+
req.setFilterFids( mSelectedFeatureIds );
2309+
2310+
QgsFeatureIterator it = getFeatures( req );
2311+
2312+
QgsFeature f;
2313+
while ( it.nextFeature( f ) )
23092314
{
2310-
features.push_back( QgsFeature() );
2311-
getFeatures( req.setFilterFid( fid ) ).nextFeature( features.back() );
2315+
features.push_back( f );
23122316
}
23132317

23142318
return features;

0 commit comments

Comments
 (0)
Please sign in to comment.