From 77bf10b752a264342653b4a953cf389ed5c28714 Mon Sep 17 00:00:00 2001 From: "Juergen E. Fischer" Date: Mon, 8 Jun 2015 17:51:04 +0200 Subject: [PATCH] vector layer: changing of attributes and geometry of new features doesn't require ChangeGeometry/ChangeAttributeValues capabilities (fixes #12909) --- src/core/qgsvectorlayereditbuffer.cpp | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/src/core/qgsvectorlayereditbuffer.cpp b/src/core/qgsvectorlayereditbuffer.cpp index 96c6e65b402..8eef1f13937 100644 --- a/src/core/qgsvectorlayereditbuffer.cpp +++ b/src/core/qgsvectorlayereditbuffer.cpp @@ -164,9 +164,6 @@ bool QgsVectorLayerEditBuffer::deleteFeature( QgsFeatureId fid ) bool QgsVectorLayerEditBuffer::changeGeometry( QgsFeatureId fid, QgsGeometry* geom ) { - if ( !( L->dataProvider()->capabilities() & QgsVectorDataProvider::ChangeGeometries ) ) - return false; - if ( !L->hasGeometryType() ) { return false; @@ -177,6 +174,8 @@ bool QgsVectorLayerEditBuffer::changeGeometry( QgsFeatureId fid, QgsGeometry* ge if ( !mAddedFeatures.contains( fid ) ) return false; } + else if ( !( L->dataProvider()->capabilities() & QgsVectorDataProvider::ChangeGeometries ) ) + return false; // TODO: check compatible geometry @@ -187,14 +186,15 @@ bool QgsVectorLayerEditBuffer::changeGeometry( QgsFeatureId fid, QgsGeometry* ge bool QgsVectorLayerEditBuffer::changeAttributeValue( QgsFeatureId fid, int field, const QVariant &newValue, const QVariant &oldValue ) { - if ( !( L->dataProvider()->capabilities() & QgsVectorDataProvider::ChangeAttributeValues ) ) - return false; - if ( FID_IS_NEW( fid ) ) { if ( !mAddedFeatures.contains( fid ) ) return false; } + else if ( !( L->dataProvider()->capabilities() & QgsVectorDataProvider::ChangeAttributeValues ) ) + { + return false; + } if ( field < 0 || field >= L->pendingFields().count() || L->pendingFields().fieldOrigin( field ) == QgsFields::OriginJoin ||