From b55c0ed82956b47f69c58937cc2da92784097ee2 Mon Sep 17 00:00:00 2001
From: Thomas Hartmann <Thomas.Hartmann@nokia.com>
Date: Tue, 16 Feb 2010 12:40:27 +0100
Subject: [PATCH] QMlDesigner.propertyEditor: perfomance optimization

Only update geometry based properties in  transformChanged()
---
 .../propertyeditor/propertyeditor.cpp         | 23 +++++++++++++++++++
 .../propertyeditor/propertyeditor.h           |  1 +
 2 files changed, 24 insertions(+)

diff --git a/src/plugins/qmldesigner/components/propertyeditor/propertyeditor.cpp b/src/plugins/qmldesigner/components/propertyeditor/propertyeditor.cpp
index d1a0fca48ee..c429b1c8084 100644
--- a/src/plugins/qmldesigner/components/propertyeditor/propertyeditor.cpp
+++ b/src/plugins/qmldesigner/components/propertyeditor/propertyeditor.cpp
@@ -295,10 +295,31 @@ void PropertyEditor::anyPropertyChanged(const QmlObjectNode &fxObjectNode)
     }
 }
 
+void PropertyEditor::geometryPropertyChanged(const QmlObjectNode &fxObjectNode)
+{
+    if (fxObjectNode.isValid() && m_currentType && fxObjectNode == m_selectedNode && fxObjectNode.currentState().isValid()) {
+        QStringList geometryProperties;
+        geometryProperties << "x" << "y" << "width" << "height" << "rotation" << "scale";
+        foreach (const QString &propertyName, geometryProperties) {
+            if ( propertyName != "id" && propertyName != "objectName") {
+                AbstractProperty property = fxObjectNode.modelNode().property(propertyName);
+                if (fxObjectNode == m_selectedNode || QmlObjectNode(m_selectedNode).propertyChangeForCurrentState() == fxObjectNode) {
+                    if ( m_selectedNode.property(property.name()).isBindingProperty() || !m_selectedNode.hasProperty(propertyName))
+                        m_currentType->setValue(m_selectedNode, property.name(), QmlObjectNode(m_selectedNode).instanceValue(property.name()));
+                    else
+                        m_currentType->setValue(m_selectedNode, property.name(), QmlObjectNode(m_selectedNode).modelValue(property.name()));
+                }
+            }
+        }
+    }
+}
+
 void PropertyEditor::otherPropertyChanged(const QmlObjectNode &fxObjectNode)
 {
     QmlModelView::otherPropertyChanged(fxObjectNode);
 
+    return ;
+
     anyPropertyChanged(fxObjectNode);
 }
 
@@ -307,6 +328,8 @@ void PropertyEditor::transformChanged(const QmlObjectNode &fxObjectNode)
     QmlModelView::transformChanged(fxObjectNode);
 
     anyPropertyChanged(fxObjectNode);
+    return ;
+
 }
 
 void PropertyEditor::setQmlDir(const QString &qmlDir)
diff --git a/src/plugins/qmldesigner/components/propertyeditor/propertyeditor.h b/src/plugins/qmldesigner/components/propertyeditor/propertyeditor.h
index 9fff376df6d..8898984c7d2 100644
--- a/src/plugins/qmldesigner/components/propertyeditor/propertyeditor.h
+++ b/src/plugins/qmldesigner/components/propertyeditor/propertyeditor.h
@@ -84,6 +84,7 @@ public:
 
 
     void anyPropertyChanged(const QmlObjectNode &qmlObjectNode);
+    void geometryPropertyChanged(const QmlObjectNode &fxObjectNode);
 
 
 
-- 
GitLab