From 55c3e747b78b1cf72d405b56889171b3ed8410a3 Mon Sep 17 00:00:00 2001
From: Erik Verbruggen <erik.verbruggen@nokia.com>
Date: Mon, 18 Jan 2010 15:27:10 +0100
Subject: [PATCH] Changed the way IDs are set, to prevent duplicate IDs in the
 model.

---
 .../qmldesigner/core/model/texttomodelmerger.cpp     | 12 ++++++++++--
 1 file changed, 10 insertions(+), 2 deletions(-)

diff --git a/src/plugins/qmldesigner/core/model/texttomodelmerger.cpp b/src/plugins/qmldesigner/core/model/texttomodelmerger.cpp
index 7646865cb8d..8c8d2140b04 100644
--- a/src/plugins/qmldesigner/core/model/texttomodelmerger.cpp
+++ b/src/plugins/qmldesigner/core/model/texttomodelmerger.cpp
@@ -129,11 +129,19 @@ void TextToModelMerger::syncNode(ModelNode &modelNode, const QmlDomObject &domOb
             domObjectId = domIdProperty.value().toLiteral().literal();
 
         if (domObjectId.isEmpty()) {
-            if (!modelNode.id().isEmpty())
+            if (!modelNode.id().isEmpty()) {
+                ModelNode existingNodeWithId = m_rewriterView->modelNodeForId(domObjectId);
+                if (existingNodeWithId.isValid())
+                    existingNodeWithId.setId(QString());
                 differenceHandler.idsDiffer(modelNode, domObjectId);
+            }
         } else {
-            if (modelNode.id() != domObjectId)
+            if (modelNode.id() != domObjectId) {
+                ModelNode existingNodeWithId = m_rewriterView->modelNodeForId(domObjectId);
+                if (existingNodeWithId.isValid())
+                    existingNodeWithId.setId(QString());
                 differenceHandler.idsDiffer(modelNode, domObjectId);
+            }
         }
     }
 
-- 
GitLab