Skip to content

Commit 24b6e63

Browse files
committedOct 13, 2015
vector layer: update geometries first before feature id might change (fixes #8255)
1 parent 957d826 commit 24b6e63

File tree

1 file changed

+20
-20
lines changed

1 file changed

+20
-20
lines changed
 

‎src/core/qgsvectorlayereditbuffer.cpp

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

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

265285
//
@@ -502,26 +522,6 @@ bool QgsVectorLayerEditBuffer::commitChanges( QStringList& commitErrors )
502522
success = false;
503523
}
504524

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

0 commit comments

Comments
 (0)
Please sign in to comment.