Skip to content

Commit a4cfdcb

Browse files
committed
vector layer: changing of attributes and geometry of new features doesn't require ChangeGeometry/ChangeAttributeValues capabilities (fixes #12909)
(cherry-picked from 77bf10b)
1 parent 129be68 commit a4cfdcb

File tree

1 file changed

+6
-6
lines changed

1 file changed

+6
-6
lines changed

src/core/qgsvectorlayereditbuffer.cpp

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -162,9 +162,6 @@ bool QgsVectorLayerEditBuffer::deleteFeature( QgsFeatureId fid )
162162

163163
bool QgsVectorLayerEditBuffer::changeGeometry( QgsFeatureId fid, QgsGeometry* geom )
164164
{
165-
if ( !( L->dataProvider()->capabilities() & QgsVectorDataProvider::ChangeGeometries ) )
166-
return false;
167-
168165
if ( !L->hasGeometryType() )
169166
{
170167
return false;
@@ -175,6 +172,8 @@ bool QgsVectorLayerEditBuffer::changeGeometry( QgsFeatureId fid, QgsGeometry* ge
175172
if ( !mAddedFeatures.contains( fid ) )
176173
return false;
177174
}
175+
else if ( !( L->dataProvider()->capabilities() & QgsVectorDataProvider::ChangeGeometries ) )
176+
return false;
178177

179178
// TODO: check compatible geometry
180179

@@ -185,14 +184,15 @@ bool QgsVectorLayerEditBuffer::changeGeometry( QgsFeatureId fid, QgsGeometry* ge
185184

186185
bool QgsVectorLayerEditBuffer::changeAttributeValue( QgsFeatureId fid, int field, const QVariant &newValue, const QVariant &oldValue )
187186
{
188-
if ( !( L->dataProvider()->capabilities() & QgsVectorDataProvider::ChangeAttributeValues ) )
189-
return false;
190-
191187
if ( FID_IS_NEW( fid ) )
192188
{
193189
if ( !mAddedFeatures.contains( fid ) )
194190
return false;
195191
}
192+
else if ( !( L->dataProvider()->capabilities() & QgsVectorDataProvider::ChangeAttributeValues ) )
193+
{
194+
return false;
195+
}
196196

197197
if ( field < 0 || field >= L->pendingFields().count() ||
198198
L->pendingFields().fieldOrigin( field ) == QgsFields::OriginJoin ||

0 commit comments

Comments
 (0)