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