[QGIS Commit] r13808 - trunk/qgis/src/app

svn_qgis at osgeo.org svn_qgis at osgeo.org
Sat Jun 26 16:17:11 EDT 2010


Author: jef
Date: 2010-06-26 20:17:11 +0000 (Sat, 26 Jun 2010)
New Revision: 13808

Modified:
   trunk/qgis/src/app/qgisapp.cpp
Log:
fix #2819

Modified: trunk/qgis/src/app/qgisapp.cpp
===================================================================
--- trunk/qgis/src/app/qgisapp.cpp	2010-06-26 20:10:33 UTC (rev 13807)
+++ trunk/qgis/src/app/qgisapp.cpp	2010-06-26 20:17:11 UTC (rev 13808)
@@ -4490,14 +4490,34 @@
     if ( pasteVectorLayer != 0 )
     {
       pasteVectorLayer->beginEditCommand( tr( "Features pasted" ) );
+      QgsFeatureList features;
       if ( mMapCanvas->mapRenderer()->hasCrsTransformEnabled() )
       {
-        pasteVectorLayer->addFeatures( clipboard()->transformedCopyOf( pasteVectorLayer->srs() ) );
+        features = clipboard()->transformedCopyOf( pasteVectorLayer->srs() );
       }
       else
       {
-        pasteVectorLayer->addFeatures( clipboard()->copyOf() );
+        features = clipboard()->copyOf();
       }
+
+      QgsAttributeList dstAttr = pasteVectorLayer->pendingAllAttributesList();
+
+      for ( int i = 0; i < features.size(); i++ )
+      {
+        QgsFeature &f = features[i];
+        QgsAttributeMap srcMap = f.attributeMap();
+        QgsAttributeMap dstMap;
+
+        int j = 0;
+        foreach( int id, srcMap.keys() )
+        {
+          dstMap[ dstAttr[j++] ] = srcMap[id];
+        }
+
+        f.setAttributeMap( dstMap );
+      }
+
+      pasteVectorLayer->addFeatures( features );
       pasteVectorLayer->endEditCommand();
       mMapCanvas->refresh();
     }



More information about the QGIS-commit mailing list