Advanced logic for QgsVectorLayer::hasFeatures()

This commit is contained in:
Matthias Kuhn 2018-05-25 10:14:24 +02:00
parent 6049e4074f
commit 8be4cc6079
No known key found for this signature in database
GPG Key ID: A0E766808764D73F

View File

@ -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;