From 6622c6a4b771bedbaea1bb31435dd77524e19ed9 Mon Sep 17 00:00:00 2001 From: Thomas Hartmann Date: Wed, 29 Jan 2020 15:09:46 +0100 Subject: [PATCH] QmlDesigner: Handle binding properties in FormEditorView Since the target property affects how transitions are visualized, we have to implement this callback and update the items. Change-Id: I30fe74dedfc0187498eee9b884f099703ca001d5 Reviewed-by: Tim Jenssen --- .../components/formeditor/formeditorview.cpp | 27 +++++++++++++++++++ .../components/formeditor/formeditorview.h | 3 +++ 2 files changed, 30 insertions(+) diff --git a/src/plugins/qmldesigner/components/formeditor/formeditorview.cpp b/src/plugins/qmldesigner/components/formeditor/formeditorview.cpp index a4644f12780..97eebbd502d 100644 --- a/src/plugins/qmldesigner/components/formeditor/formeditorview.cpp +++ b/src/plugins/qmldesigner/components/formeditor/formeditorview.cpp @@ -36,6 +36,7 @@ #include "formeditorscene.h" #include "abstractcustomtool.h" +#include #include #include #include @@ -367,6 +368,32 @@ void FormEditorView::selectedNodesChanged(const QList &selectedNodeLi m_scene->update(); } +void FormEditorView::bindingPropertiesChanged(const QList &propertyList, AbstractView::PropertyChangeFlags propertyChange) +{ + for (const BindingProperty &property : propertyList) { + QmlVisualNode node(property.parentModelNode()); + if (node.isFlowTransition()) { + qDebug() << "isflow" << node; + FormEditorItem *item = m_scene->itemForQmlItemNode(node.toQmlItemNode()); + if (item) { + m_scene->reparentItem(node.toQmlItemNode(), node.toQmlItemNode().modelParentItem()); + m_scene->synchronizeTransformation(item); + item->update(); + } + } else if (QmlFlowActionAreaNode::isValidQmlFlowActionAreaNode(property.parentModelNode())) { + const QmlVisualNode target = property.resolveToModelNode(); + if (target.modelNode().isValid() && target.isFlowTransition()) { + FormEditorItem *item = m_scene->itemForQmlItemNode(target.toQmlItemNode()); + if (item) { + m_scene->reparentItem(node.toQmlItemNode(), node.toQmlItemNode().modelParentItem()); + m_scene->synchronizeTransformation(item); + item->update(); + } + } + } + } +} + void FormEditorView::documentMessagesChanged(const QList &errors, const QList &) { if (!errors.isEmpty()) diff --git a/src/plugins/qmldesigner/components/formeditor/formeditorview.h b/src/plugins/qmldesigner/components/formeditor/formeditorview.h index 2319da48828..74d00f4a209 100644 --- a/src/plugins/qmldesigner/components/formeditor/formeditorview.h +++ b/src/plugins/qmldesigner/components/formeditor/formeditorview.h @@ -76,6 +76,9 @@ public: void selectedNodesChanged(const QList &selectedNodeList, const QList &lastSelectedNodeList) override; + void bindingPropertiesChanged(const QList& propertyList, + PropertyChangeFlags propertyChange) override; + void documentMessagesChanged(const QList &errors, const QList &warnings) override; void customNotification(const AbstractView *view, const QString &identifier, const QList &nodeList, const QList &data) override;