From 69344a53dbfca94b34fc42976647af86a4dadfad Mon Sep 17 00:00:00 2001 From: Thomas Hartmann Date: Fri, 5 Mar 2021 15:26:04 +0100 Subject: [PATCH] QmlDesigner.FlowView: Update flow items in instancesCompleted When a instances are completed we call updateGeometry on all transitions to ensure the click region is correctly initialized. Change-Id: I75e81c0010e952a7d0567b3396e95eb134bd86fc Reviewed-by: Thomas Hartmann --- .../components/formeditor/formeditorview.cpp | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/src/plugins/qmldesigner/components/formeditor/formeditorview.cpp b/src/plugins/qmldesigner/components/formeditor/formeditorview.cpp index b73335b1b26..0ee760b9a13 100644 --- a/src/plugins/qmldesigner/components/formeditor/formeditorview.cpp +++ b/src/plugins/qmldesigner/components/formeditor/formeditorview.cpp @@ -637,8 +637,21 @@ void FormEditorView::auxiliaryDataChanged(const ModelNode &node, const PropertyN } } +static void updateTransitions(FormEditorScene *scene, const QmlItemNode &qmlItemNode) +{ + QmlFlowTargetNode flowItem(qmlItemNode); + if (flowItem.isValid() && flowItem.flowView().isValid()) { + const auto nodes = flowItem.flowView().transitions(); + for (const ModelNode &node : nodes) { + if (FormEditorItem *item = scene->itemForQmlItemNode(node)) + item->updateGeometry(); + } + }; +} + void FormEditorView::instancesCompleted(const QVector &completedNodeList) { + const bool isFlow = rootModelNode().isValid() && QmlItemNode(rootModelNode()).isFlowView(); QList itemNodeList; for (const ModelNode &node : completedNodeList) { const QmlItemNode qmlItemNode(node); @@ -646,6 +659,8 @@ void FormEditorView::instancesCompleted(const QVector &completedNodeL if (FormEditorItem *item = scene()->itemForQmlItemNode(qmlItemNode)) { scene()->synchronizeParent(qmlItemNode); itemNodeList.append(item); + if (isFlow && qmlItemNode.isFlowItem()) + updateTransitions(scene(), qmlItemNode); } } }