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 <thomas.hartmann@qt.io>
This commit is contained in:
Thomas Hartmann
2021-03-05 15:26:04 +01:00
parent 526fe8bf0b
commit 69344a53db

View File

@@ -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<ModelNode> &completedNodeList)
{
const bool isFlow = rootModelNode().isValid() && QmlItemNode(rootModelNode()).isFlowView();
QList<FormEditorItem*> itemNodeList;
for (const ModelNode &node : completedNodeList) {
const QmlItemNode qmlItemNode(node);
@@ -646,6 +659,8 @@ void FormEditorView::instancesCompleted(const QVector<ModelNode> &completedNodeL
if (FormEditorItem *item = scene()->itemForQmlItemNode(qmlItemNode)) {
scene()->synchronizeParent(qmlItemNode);
itemNodeList.append(item);
if (isFlow && qmlItemNode.isFlowItem())
updateTransitions(scene(), qmlItemNode);
}
}
}