Skip to content

Commit 8be4cc6

Browse files
committed
Advanced logic for QgsVectorLayer::hasFeatures()
1 parent 6049e40 commit 8be4cc6

File tree

1 file changed

+12
-1
lines changed

1 file changed

+12
-1
lines changed

src/core/qgsvectorlayer.cpp

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2767,7 +2767,18 @@ long QgsVectorLayer::featureCount() const
27672767

27682768
QgsFeatureSource::FeatureAvailability QgsVectorLayer::hasFeatures() const
27692769
{
2770-
if ( mDataProvider->empty() && ( !mEditBuffer || mEditBuffer->addedFeatures().empty() ) )
2770+
const QgsFeatureIds deletedFeatures = mEditBuffer->deletedFeatureIds();
2771+
const QgsFeatureMap addedFeatures = mEditBuffer->addedFeatures();
2772+
2773+
if ( mEditBuffer && !deletedFeatures.empty() )
2774+
{
2775+
if ( addedFeatures.size() > deletedFeatures.size() )
2776+
return QgsFeatureSource::FeatureAvailability::FeaturesAvailable;
2777+
else
2778+
return QgsFeatureSource::FeatureAvailability::FeaturesMaybeAvailable;
2779+
}
2780+
2781+
if ( ( !mEditBuffer || addedFeatures.empty() ) && mDataProvider->empty() )
27712782
return QgsFeatureSource::FeatureAvailability::NoFeaturesAvailable;
27722783
else
27732784
return QgsFeatureSource::FeatureAvailability::FeaturesAvailable;

0 commit comments

Comments
 (0)