From de3faf853daff1d89d4b57cbdf33728ab1d3f17c Mon Sep 17 00:00:00 2001 From: Thomas Hartmann Date: Thu, 3 Dec 2020 17:26:36 +0100 Subject: [PATCH] QmlDesigner: Update transitions if position changes MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Change-Id: Ie971ee68f9f0ea9b200955487fe53e6465030129 Reviewed-by: Henning Gründl Reviewed-by: Thomas Hartmann --- .../components/formeditor/formeditoritem.cpp | 19 +++++++++++++++++-- 1 file changed, 17 insertions(+), 2 deletions(-) diff --git a/src/plugins/qmldesigner/components/formeditor/formeditoritem.cpp b/src/plugins/qmldesigner/components/formeditor/formeditoritem.cpp index 10eff821136..77d35ea6578 100644 --- a/src/plugins/qmldesigner/components/formeditor/formeditoritem.cpp +++ b/src/plugins/qmldesigner/components/formeditor/formeditoritem.cpp @@ -656,8 +656,23 @@ void FormEditorFlowActionItem::setDataModelPositionInBaseState(const QPointF &po void FormEditorFlowActionItem::updateGeometry() { FormEditorItem::updateGeometry(); - //const QPointF pos = qmlItemNode().flowPosition(); - //setTransform(QTransform::fromTranslate(pos.x(), pos.y())); + + const QPointF pos = qmlItemNode().instancePosition(); + + if (pos == m_oldPos) + return; + + m_oldPos = pos; + + // Call updateGeometry() on all related transitions + QmlFlowItemNode flowItem = QmlFlowActionAreaNode(qmlItemNode()).flowItemParent(); + 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 FormEditorFlowActionItem::paint(QPainter *painter, const QStyleOptionGraphicsItem *, QWidget *)