From 7ba726529e6e2e5e90b80fda813295d6b24cbf1d Mon Sep 17 00:00:00 2001
From: Marco Bubke <marco.bubke@nokia.com>
Date: Wed, 29 Jun 2011 17:14:45 +0200
Subject: [PATCH] QmlDesigner.FormEditor: Fix handling of property changes

Change-Id: I49d36574d4021b4c73c64873b1f21698c038498d
Task-number:  QTCREATORBUG-5226
Reviewed-on: http://codereview.qt.nokia.com/914
Reviewed-by: Qt Sanity Bot <qt_sanity_bot@ovi.com>
Reviewed-by: Thomas Hartmann <Thomas.Hartmann@nokia.com>
---
 .../components/formeditor/formeditorscene.cpp |  3 +++
 .../components/formeditor/formeditorview.cpp  | 24 ++++++++++++-------
 .../components/formeditor/formeditorview.h    |  2 +-
 3 files changed, 19 insertions(+), 10 deletions(-)

diff --git a/src/plugins/qmldesigner/components/formeditor/formeditorscene.cpp b/src/plugins/qmldesigner/components/formeditor/formeditorscene.cpp
index bb257b32787..1b429d0dd93 100644
--- a/src/plugins/qmldesigner/components/formeditor/formeditorscene.cpp
+++ b/src/plugins/qmldesigner/components/formeditor/formeditorscene.cpp
@@ -196,6 +196,9 @@ void FormEditorScene::synchronizeOtherProperty(const QmlItemNode &qmlItemNode, c
         if (propertyName == "clip")
             item->setFlag(QGraphicsItem::ItemClipsChildrenToShape, qmlItemNode.instanceValue("clip").toBool());
 
+        if (propertyName == "z")
+            item->setZValue(qmlItemNode.instanceValue("z").toDouble());
+
         if (!qmlItemNode.isRootNode()) {
             if (propertyName == "visible")
                 item->setContentVisible(qmlItemNode.instanceValue("visible").toBool());
diff --git a/src/plugins/qmldesigner/components/formeditor/formeditorview.cpp b/src/plugins/qmldesigner/components/formeditor/formeditorview.cpp
index 3e0ebe06c41..e0d0b58297d 100644
--- a/src/plugins/qmldesigner/components/formeditor/formeditorview.cpp
+++ b/src/plugins/qmldesigner/components/formeditor/formeditorview.cpp
@@ -573,16 +573,22 @@ QmlItemNode findRecursiveQmlItemNode(const QmlObjectNode &firstQmlObjectNode)
     return QmlItemNode();
 }
 
-void FormEditorView::otherPropertyChanged(const QmlObjectNode &qmlObjectNode, const QString &propertyName)
-{
-    Q_ASSERT(qmlObjectNode.isValid());
-
-    QmlItemNode itemNode = findRecursiveQmlItemNode(qmlObjectNode);
-
-    if (itemNode.isValid() && scene()->hasItemForQmlItemNode(itemNode)) {
-        m_scene->synchronizeOtherProperty(itemNode, propertyName);
-        m_currentTool->formEditorItemsChanged(QList<FormEditorItem*>() << m_scene->itemForQmlItemNode(itemNode));
+void FormEditorView::instancePropertyChange(const QList<QPair<ModelNode, QString> > &propertyList)
+{
+    typedef QPair<ModelNode, QString> NodePropertyPair;
+    foreach (const NodePropertyPair &nodePropertyPair, propertyList) {
+        const QmlItemNode itemNode(nodePropertyPair.first);
+        const QString propertyName = nodePropertyPair.second;
+        if (itemNode.isValid() && scene()->hasItemForQmlItemNode(itemNode)) {
+            static QStringList skipList = QStringList() << "x" << "y" << "width" << "height";
+            if (!skipList.contains(propertyName)) {
+                m_scene->synchronizeOtherProperty(itemNode, propertyName);
+                m_currentTool->formEditorItemsChanged(QList<FormEditorItem*>() << m_scene->itemForQmlItemNode(itemNode));
+            }
+        }
     }
+
+    QmlModelView::instancePropertyChange(propertyList);
 }
 
 void FormEditorView::updateGraphicsIndicators()
diff --git a/src/plugins/qmldesigner/components/formeditor/formeditorview.h b/src/plugins/qmldesigner/components/formeditor/formeditorview.h
index 2657d6ae3b0..44ff565aedc 100644
--- a/src/plugins/qmldesigner/components/formeditor/formeditorview.h
+++ b/src/plugins/qmldesigner/components/formeditor/formeditorview.h
@@ -108,6 +108,7 @@ public:
     void instancesRenderImageChanged(const QVector<ModelNode> &nodeList);
     void instancesPreviewImageChanged(const QVector<ModelNode> &nodeList);
     void instancesChildrenChanged(const QVector<ModelNode> &nodeList);
+    void instancePropertyChange(const QList<QPair<ModelNode, QString> > &propertyList);
 
     void rewriterBeginTransaction();
     void rewriterEndTransaction();
@@ -123,7 +124,6 @@ signals:
     void ItemCreatorDeActivated();
 
 protected:
-    void otherPropertyChanged(const QmlObjectNode &qmlObjectNode, const QString &propertyName);
     void stateChanged(const QmlModelState &newQmlModelState, const QmlModelState &oldQmlModelState);
     void reset();
 
-- 
GitLab