aboutsummaryrefslogtreecommitdiffstats
path: root/src/plugins/qmldesigner/designercore
diff options
context:
space:
mode:
authorHenning Gruendl <henning.gruendl@qt.io>2020-06-15 17:37:58 +0200
committerThomas Hartmann <thomas.hartmann@qt.io>2020-06-15 15:42:55 +0000
commitb0a8c7066226193a56c6c08dd1caf99367fcd39d (patch)
tree0dee3c2ad2f4003833499f8a42adcf2fb3b16470 /src/plugins/qmldesigner/designercore
parent9a0acda2c9aee63f265e8ddd5012263daa3b24c5 (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.h3
-rw-r--r--src/plugins/qmldesigner/designercore/model/qmlitemnode.cpp52
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());