diff --git a/src/plugins/qmldesigner/designercore/include/qmlitemnode.h b/src/plugins/qmldesigner/designercore/include/qmlitemnode.h index c9fa5ea3b8b..ef8f1b28ba2 100644 --- a/src/plugins/qmldesigner/designercore/include/qmlitemnode.h +++ b/src/plugins/qmldesigner/designercore/include/qmlitemnode.h @@ -144,6 +144,7 @@ public: QmlFlowViewNode flowView() const; ModelNode findSourceForDecisionNode() const; static bool isFlowEditorTarget(const ModelNode &modelNode); + void removeTransitions(); }; class QMLDESIGNERCORE_EXPORT QmlFlowActionAreaNode : public QmlItemNode @@ -181,6 +182,8 @@ public: const QList wildcards() const; const QList decicions() const; QList transitionsForTarget(const ModelNode &modelNode); + void removeDanglingTransitions(); + void removeAllTransitions(); }; diff --git a/src/plugins/qmldesigner/designercore/model/qmlitemnode.cpp b/src/plugins/qmldesigner/designercore/model/qmlitemnode.cpp index 65f719a5ac9..d2c312dd272 100644 --- a/src/plugins/qmldesigner/designercore/model/qmlitemnode.cpp +++ b/src/plugins/qmldesigner/designercore/model/qmlitemnode.cpp @@ -715,6 +715,14 @@ QList QmlFlowViewNode::transitionsForTarget(const ModelNode &modelNod return list; } +void QmlFlowViewNode::removeDanglingTransitions() +{ + for (const ModelNode &transition : transitions()) { + if (!transition.hasBindingProperty("to")) + QmlObjectNode(transition).destroy(); + } +} + bool QmlFlowTargetNode::isValid() const { return isFlowEditorTarget(modelNode()); @@ -802,4 +810,24 @@ bool QmlFlowTargetNode::isFlowEditorTarget(const ModelNode &modelNode) || QmlVisualNode::isFlowWildcard(modelNode); } +void QmlFlowTargetNode::removeTransitions() +{ + if (!modelNode().hasId()) + return; + + for (const BindingProperty &property : BindingProperty::findAllReferencesTo(modelNode())) { + if (property.isValid() && QmlVisualNode::isFlowTransition(property.parentModelNode())) + QmlObjectNode(property.parentModelNode()).destroy(); + } +} + +void QmlFlowViewNode::removeAllTransitions() +{ + if (!isValid()) + return; + + if (hasProperty("flowTransitions")) + removeProperty("flowTransitions"); +} + } //QmlDesigner