Skip to content

Commit

Permalink
Advanced logic for QgsVectorLayer::hasFeatures()
Browse files Browse the repository at this point in the history
  • Loading branch information
m-kuhn committed Jun 4, 2018
1 parent 6049e40 commit 8be4cc6
Showing 1 changed file with 12 additions and 1 deletion.
13 changes: 12 additions & 1 deletion src/core/qgsvectorlayer.cpp
Expand Up @@ -2767,7 +2767,18 @@ long QgsVectorLayer::featureCount() const

QgsFeatureSource::FeatureAvailability QgsVectorLayer::hasFeatures() const
{
if ( mDataProvider->empty() && ( !mEditBuffer || mEditBuffer->addedFeatures().empty() ) )
const QgsFeatureIds deletedFeatures = mEditBuffer->deletedFeatureIds();
const QgsFeatureMap addedFeatures = mEditBuffer->addedFeatures();

if ( mEditBuffer && !deletedFeatures.empty() )
{
if ( addedFeatures.size() > deletedFeatures.size() )
return QgsFeatureSource::FeatureAvailability::FeaturesAvailable;
else
return QgsFeatureSource::FeatureAvailability::FeaturesMaybeAvailable;
}

if ( ( !mEditBuffer || addedFeatures.empty() ) && mDataProvider->empty() )
return QgsFeatureSource::FeatureAvailability::NoFeaturesAvailable;
else
return QgsFeatureSource::FeatureAvailability::FeaturesAvailable;
Expand Down

0 comments on commit 8be4cc6

Please sign in to comment.