diff --git a/src/plugins/qmldesigner/components/formeditor/formeditorscene.cpp b/src/plugins/qmldesigner/components/formeditor/formeditorscene.cpp index bb257b3278725dfd26a40d9ff00c368997f8fa58..1b429d0dd93dacbf976cd3b7fe4b4912165000af 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 3e0ebe06c41cc423b04de38ac75341a34050e20f..e0d0b58297d309e46ba27b64feb3d400d189e435 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 2657d6ae3b07cf49ad7ae246951ba92dd390a946..44ff565aedc639259207737c9e842c1345d2be01 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();