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