[QGIS Commit] r8634 - trunk/qgis/src/core

svn_qgis at osgeo.org svn_qgis at osgeo.org
Mon Jun 9 13:12:09 EDT 2008


Author: mhugent
Date: 2008-06-09 13:12:09 -0400 (Mon, 09 Jun 2008)
New Revision: 8634

Modified:
   trunk/qgis/src/core/qgsvectorlayer.cpp
Log:
Applied patch provided by Adrien to fix problem where attributes where not copied for modified features

Modified: trunk/qgis/src/core/qgsvectorlayer.cpp
===================================================================
--- trunk/qgis/src/core/qgsvectorlayer.cpp	2008-06-09 16:11:38 UTC (rev 8633)
+++ trunk/qgis/src/core/qgsvectorlayer.cpp	2008-06-09 17:12:09 UTC (rev 8634)
@@ -1273,10 +1273,30 @@
 	    }
 	  if(fetchAttributes)
 	    {
-	      QgsFeature tmpFeature;
-	      mDataProvider->getFeatureAtId(changedIt.key(), tmpFeature, false, mDataProvider->allAttributesList());
-	      newFeature.setAttributeMap(tmpFeature.attributeMap());
-	      
+	      if(changedIt.key()<0)
+		{
+		  //The feature is in mAddedFeature's list because its id<0
+		  bool findMyFeature = false;
+		  for (QgsFeatureList::iterator iter = mAddedFeatures.begin(); iter != mAddedFeatures.end(); ++iter)
+		    {
+		      if(iter->featureId()==changedIt.key())
+			{
+			   findMyFeature = true;
+			   newFeature.setAttributeMap(iter->attributeMap());
+			   break;
+			}
+		    }
+		  if(!findMyFeature)
+		    {
+		      QgsLogger::warning("No attribute for the feature");
+		    }
+		}
+	      else
+		{
+		  QgsFeature tmpFeature;
+		  mDataProvider->getFeatureAtId(changedIt.key(), tmpFeature, false, mDataProvider->allAttributesList());
+		  newFeature.setAttributeMap(tmpFeature.attributeMap());
+		}
 	    }
 	  features.push_back(newFeature);
 	}



More information about the QGIS-commit mailing list