Skip to content

Commit e9d2a0e

Browse files
committed
vector layer: update geometries first before feature id might change (fixes #8255)
(backported from commit 24b6e63)
1 parent 6c3290b commit e9d2a0e

1 file changed

Lines changed: 20 additions & 20 deletions

File tree

src/core/qgsvectorlayereditbuffer.cpp

Lines changed: 20 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -258,6 +258,26 @@ bool QgsVectorLayerEditBuffer::commitChanges( QStringList& commitErrors )
258258
int cap = provider->capabilities();
259259
bool success = true;
260260

261+
//
262+
// update geometries
263+
//
264+
if ( !mChangedGeometries.isEmpty() )
265+
{
266+
if (( cap & QgsVectorDataProvider::ChangeGeometries ) && provider->changeGeometryValues( mChangedGeometries ) )
267+
{
268+
commitErrors << tr( "SUCCESS: %n geometries were changed.", "changed geometries count", mChangedGeometries.size() );
269+
270+
emit committedGeometriesChanges( L->id(), mChangedGeometries );
271+
272+
mChangedGeometries.clear();
273+
}
274+
else
275+
{
276+
commitErrors << tr( "ERROR: %n geometries not changed.", "not changed geometries count", mChangedGeometries.size() );
277+
success = false;
278+
}
279+
}
280+
261281
QgsFields oldFields = L->pendingFields();
262282

263283
//
@@ -500,26 +520,6 @@ bool QgsVectorLayerEditBuffer::commitChanges( QStringList& commitErrors )
500520
success = false;
501521
}
502522

503-
//
504-
// update geometries
505-
//
506-
if ( success && !mChangedGeometries.isEmpty() )
507-
{
508-
if (( cap & QgsVectorDataProvider::ChangeGeometries ) && provider->changeGeometryValues( mChangedGeometries ) )
509-
{
510-
commitErrors << tr( "SUCCESS: %n geometries were changed.", "changed geometries count", mChangedGeometries.size() );
511-
512-
emit committedGeometriesChanges( L->id(), mChangedGeometries );
513-
514-
mChangedGeometries.clear();
515-
}
516-
else
517-
{
518-
commitErrors << tr( "ERROR: %n geometries not changed.", "not changed geometries count", mChangedGeometries.size() );
519-
success = false;
520-
}
521-
}
522-
523523
if ( !success && provider->hasErrors() )
524524
{
525525
commitErrors << tr( "\n Provider errors:" );

0 commit comments

Comments
 (0)