mirror of
https://github.com/qgis/QGIS.git
synced 2025-02-28 00:17:30 -05:00
QgsVectorLayer: use featureAtId() in selectedFeatures() (fixes #4856)
This commit is contained in:
parent
3903fa4981
commit
0b1fd34c3e
@ -3971,44 +3971,13 @@ const QgsFeatureIds& QgsVectorLayer::selectedFeaturesIds() const
|
||||
|
||||
QgsFeatureList QgsVectorLayer::selectedFeatures()
|
||||
{
|
||||
if ( !mDataProvider )
|
||||
{
|
||||
return QgsFeatureList();
|
||||
}
|
||||
|
||||
QgsFeatureList features;
|
||||
|
||||
QgsAttributeList allAttrs = mDataProvider->attributeIndexes();
|
||||
mFetchAttributes = pendingAllAttributesList();
|
||||
|
||||
for ( QgsFeatureIds::iterator it = mSelectedFeatureIds.begin(); it != mSelectedFeatureIds.end(); ++it )
|
||||
foreach( QgsFeatureId fid, mSelectedFeatureIds )
|
||||
{
|
||||
QgsFeature feat;
|
||||
|
||||
bool selectionIsAddedFeature = false;
|
||||
|
||||
// Check this selected item against the uncommitted added features
|
||||
for ( QgsFeatureList::iterator iter = mAddedFeatures.begin(); iter != mAddedFeatures.end(); ++iter )
|
||||
{
|
||||
if ( *it == iter->id() )
|
||||
{
|
||||
feat = QgsFeature( *iter );
|
||||
selectionIsAddedFeature = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
// if the geometry is not newly added, get it from provider
|
||||
if ( !selectionIsAddedFeature )
|
||||
{
|
||||
mDataProvider->featureAtId( *it, feat, true, allAttrs );
|
||||
}
|
||||
|
||||
updateFeatureAttributes( feat );
|
||||
updateFeatureGeometry( feat );
|
||||
|
||||
features << feat;
|
||||
} // for each selected
|
||||
features.push_back( QgsFeature() );
|
||||
featureAtId( fid, features.back(), true, true );
|
||||
}
|
||||
|
||||
return features;
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user