mirror of
https://github.com/qgis/QGIS.git
synced 2025-03-01 00:46:20 -05:00
Fix #12139 - added features saved in reversed order
This commit is contained in:
parent
8ee8fc54d9
commit
d8083b96ef
@ -21,6 +21,20 @@
|
|||||||
#include "qgsvectorlayer.h"
|
#include "qgsvectorlayer.h"
|
||||||
|
|
||||||
|
|
||||||
|
//! populate two lists (ks, vs) from map - in reverse order
|
||||||
|
template <class Key, class T> void mapToReversedLists( const QMap< Key, T >& map, QList<Key>& ks, QList<T>& vs )
|
||||||
|
{
|
||||||
|
ks.reserve( map.size() );
|
||||||
|
vs.reserve( map.size() );
|
||||||
|
typename QMap<Key, T>::const_iterator i = map.constEnd();
|
||||||
|
while ( i-- != map.constBegin() )
|
||||||
|
{
|
||||||
|
ks.append( i.key() );
|
||||||
|
vs.append( i.value() );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
QgsVectorLayerEditBuffer::QgsVectorLayerEditBuffer( QgsVectorLayer* layer )
|
QgsVectorLayerEditBuffer::QgsVectorLayerEditBuffer( QgsVectorLayer* layer )
|
||||||
: L( layer )
|
: L( layer )
|
||||||
{
|
{
|
||||||
@ -425,8 +439,11 @@ bool QgsVectorLayerEditBuffer::commitChanges( QStringList& commitErrors )
|
|||||||
{
|
{
|
||||||
if ( cap & QgsVectorDataProvider::AddFeatures )
|
if ( cap & QgsVectorDataProvider::AddFeatures )
|
||||||
{
|
{
|
||||||
QList<QgsFeatureId> ids = mAddedFeatures.keys();
|
QList<QgsFeatureId> ids;
|
||||||
QgsFeatureList featuresToAdd = mAddedFeatures.values();
|
QgsFeatureList featuresToAdd;
|
||||||
|
// get the list of added features in reversed order
|
||||||
|
// this will preserve the order how they have been added e.g. (-1, -2, -3) while in the map they are ordered (-3, -2, -1)
|
||||||
|
mapToReversedLists( mAddedFeatures, ids, featuresToAdd );
|
||||||
|
|
||||||
if ( provider->addFeatures( featuresToAdd ) )
|
if ( provider->addFeatures( featuresToAdd ) )
|
||||||
{
|
{
|
||||||
|
Loading…
x
Reference in New Issue
Block a user