From 8e9da5f797d667458ca6af95aeda3ac21d73cb72 Mon Sep 17 00:00:00 2001
From: Thomas Hartmann <Thomas.Hartmann@nokia.com>
Date: Mon, 19 Sep 2011 17:13:59 +0200
Subject: [PATCH] QmlDesigner.instances: support for auxiliaryData
 @NodeInstance

This allows overwriting values in node instances only.

Change-Id: I596323a9ebc112033c9811a8aaf35fed371cb867
Reviewed-on: http://codereview.qt-project.org/4924
Reviewed-by: Qt Sanity Bot <qt_sanity_bot@ovi.com>
Reviewed-by: Marco Bubke <marco.bubke@nokia.com>
Reviewed-by: Thomas Hartmann <Thomas.Hartmann@nokia.com>
---
 .../qml/qmlpuppet/instances/nodeinstanceserver.cpp    | 11 +++++++++++
 .../designercore/instances/nodeinstanceview.cpp       |  2 +-
 2 files changed, 12 insertions(+), 1 deletion(-)

diff --git a/share/qtcreator/qml/qmlpuppet/instances/nodeinstanceserver.cpp b/share/qtcreator/qml/qmlpuppet/instances/nodeinstanceserver.cpp
index 256ee72857d..066113a1565 100644
--- a/share/qtcreator/qml/qmlpuppet/instances/nodeinstanceserver.cpp
+++ b/share/qtcreator/qml/qmlpuppet/instances/nodeinstanceserver.cpp
@@ -816,6 +816,17 @@ void NodeInstanceServer::setInstanceAuxiliaryData(const PropertyValueContainer &
             rootNodeInstance().resetProperty(auxiliaryContainer.name());
         }
     }
+    if (auxiliaryContainer.name().endsWith(QLatin1String("@NodeInstance"))) {
+        QString propertyName = auxiliaryContainer.name().leftRef(auxiliaryContainer.name().count() - 12).toString();
+        if (!auxiliaryContainer.value().isNull()) {
+            setInstancePropertyVariant(PropertyValueContainer(auxiliaryContainer.instanceId(),
+                                                              propertyName,
+                                                              auxiliaryContainer.value(),
+                                                              auxiliaryContainer.dynamicTypeName()));
+        } else {
+            rootNodeInstance().resetProperty(propertyName);
+        }
+    }
 }
 
 
diff --git a/src/plugins/qmldesigner/designercore/instances/nodeinstanceview.cpp b/src/plugins/qmldesigner/designercore/instances/nodeinstanceview.cpp
index adfdae29b3b..ec67e6db09c 100644
--- a/src/plugins/qmldesigner/designercore/instances/nodeinstanceview.cpp
+++ b/src/plugins/qmldesigner/designercore/instances/nodeinstanceview.cpp
@@ -504,7 +504,7 @@ void NodeInstanceView::instancesToken(const QString &/*tokenName*/, int /*tokenN
 
 void NodeInstanceView::auxiliaryDataChanged(const ModelNode &node, const QString &name, const QVariant &data)
 {
-    if (node.isRootNode() && (name == "width" || name == "height")) {
+    if ((node.isRootNode() && (name == "width" || name == "height")) || name.endsWith(QLatin1String("@NodeInstance"))) {
         if (hasInstanceForNode(node)) {
             NodeInstance instance = instanceForNode(node);
             QVariant value = data;
-- 
GitLab