diff options
author | Henning Gruendl <henning.gruendl@qt.io> | 2020-06-15 17:37:58 +0200 |
---|---|---|
committer | Thomas Hartmann <thomas.hartmann@qt.io> | 2020-06-15 15:42:55 +0000 |
commit | b0a8c7066226193a56c6c08dd1caf99367fcd39d (patch) | |
tree | 0dee3c2ad2f4003833499f8a42adcf2fb3b16470 /src/plugins/qmldesigner/designercore | |
parent | 9a0acda2c9aee63f265e8ddd5012263daa3b24c5 (diff) |
QmlDesigner: Fix FlowDecision transition
Fix the transition for FlowDecision so it will also connect to
QmlFlowItemNode directly without the need of a QmlFlowActionAreaNode.
Task-number: QDS-2280
Change-Id: I61a5ab234068bcbc0c28ae43c720d7fc22e941b6
Reviewed-by: Thomas Hartmann <thomas.hartmann@qt.io>
Diffstat (limited to 'src/plugins/qmldesigner/designercore')
-rw-r--r-- | src/plugins/qmldesigner/designercore/include/qmlitemnode.h | 3 | ||||
-rw-r--r-- | src/plugins/qmldesigner/designercore/model/qmlitemnode.cpp | 52 |
2 files changed, 28 insertions, 27 deletions
diff --git a/src/plugins/qmldesigner/designercore/include/qmlitemnode.h b/src/plugins/qmldesigner/designercore/include/qmlitemnode.h index d779cc15bf..f37bae869e 100644 --- a/src/plugins/qmldesigner/designercore/include/qmlitemnode.h +++ b/src/plugins/qmldesigner/designercore/include/qmlitemnode.h @@ -157,7 +157,6 @@ public: void assignTargetFlowItem(const QmlFlowTargetNode &flowItem); QmlFlowItemNode flowItemParent() const; void destroyTarget(); - ModelNode decisionNodeForTransition(const ModelNode &transition) const; }; class QMLDESIGNERCORE_EXPORT QmlFlowItemNode : public QmlItemNode @@ -168,6 +167,8 @@ public: static bool isValidQmlFlowItemNode(const ModelNode &modelNode); QList<QmlFlowActionAreaNode> flowActionAreas() const; QmlFlowViewNode flowView() const; + + static ModelNode decisionNodeForTransition(const ModelNode &transition); }; class QMLDESIGNERCORE_EXPORT QmlFlowViewNode : public QmlItemNode diff --git a/src/plugins/qmldesigner/designercore/model/qmlitemnode.cpp b/src/plugins/qmldesigner/designercore/model/qmlitemnode.cpp index de500197c1..89617f2bc4 100644 --- a/src/plugins/qmldesigner/designercore/model/qmlitemnode.cpp +++ b/src/plugins/qmldesigner/designercore/model/qmlitemnode.cpp @@ -559,6 +559,32 @@ QmlFlowViewNode QmlFlowItemNode::flowView() const return QmlFlowViewNode({}); } +ModelNode QmlFlowItemNode::decisionNodeForTransition(const ModelNode &transition) +{ + ModelNode target = transition; + + if (target.isValid() && target.hasMetaInfo() && QmlVisualNode::isFlowTransition(target)) { + + ModelNode finalTarget = target.bindingProperty("to").resolveToModelNode(); + + if (finalTarget.isValid() && finalTarget.hasMetaInfo() && QmlVisualNode::isFlowDecision(finalTarget)) { + if (finalTarget.hasBindingProperty("targets") + && finalTarget.bindingProperty("targets").resolveToModelNodeList().contains(transition)) + return finalTarget; + } + QmlFlowViewNode flowView(transition.view()->rootModelNode()); + if (flowView.isValid()) { + for (const ModelNode target : flowView.decicions()) { + if (target.hasBindingProperty("targets") + && target.bindingProperty("targets").resolveToModelNodeList().contains(transition)) + return target; + } + } + } + + return {}; +} + bool QmlFlowActionAreaNode::isValid() const { return isValidQmlFlowActionAreaNode(modelNode()); @@ -615,32 +641,6 @@ void QmlFlowActionAreaNode::destroyTarget() } } -ModelNode QmlFlowActionAreaNode::decisionNodeForTransition(const ModelNode &transition) const -{ - ModelNode target = targetTransition(); - - if (target.isValid() && target.hasMetaInfo() && QmlVisualNode::isFlowTransition(target)) { - - ModelNode finalTarget = target.bindingProperty("to").resolveToModelNode(); - - if (finalTarget.isValid() && finalTarget.hasMetaInfo() && QmlVisualNode::isFlowDecision(finalTarget)) { - if (finalTarget.hasBindingProperty("targets") - && finalTarget.bindingProperty("targets").resolveToModelNodeList().contains(transition)) - return finalTarget; - } - QmlFlowViewNode flowView(view()->rootModelNode()); - if (flowView.isValid()) { - for (const ModelNode target : flowView.decicions()) { - if (target.hasBindingProperty("targets") - && target.bindingProperty("targets").resolveToModelNodeList().contains(transition)) - return target; - } - } - } - - return {}; -} - bool QmlFlowViewNode::isValid() const { return isValidQmlFlowViewNode(modelNode()); |