From f63bd7f933829ca49d19d02cba294d7e0a3384a1 Mon Sep 17 00:00:00 2001 From: Thomas Hartmann Date: Thu, 21 Mar 2024 14:46:40 +0100 Subject: [PATCH] QmlDesigner: Crash fix * Add QTC_CHECK for crash * ActionAreas should not be "garbage" collected if they have no target. * Initial ActionAreas do not have a target and ActionAreas without target make sense to a user. We do not want to delete them together with the target. Task-number: QDS-12181 Change-Id: Ie520c47aad990a8ff07fc3346e6772226d334ce5 Reviewed-by: Marco Bubke Reviewed-by: --- src/plugins/qmldesigner/designercore/include/qmlitemnode.h | 1 + .../qmldesigner/designercore/model/modelresourcemanagement.cpp | 3 +-- src/plugins/qmldesigner/designercore/model/qmlitemnode.cpp | 1 - .../tests/unittests/model/modelresourcemanagement-test.cpp | 1 - 4 files changed, 2 insertions(+), 4 deletions(-) diff --git a/src/plugins/qmldesigner/designercore/include/qmlitemnode.h b/src/plugins/qmldesigner/designercore/include/qmlitemnode.h index dde5515a5a0..e11f201cdb2 100644 --- a/src/plugins/qmldesigner/designercore/include/qmlitemnode.h +++ b/src/plugins/qmldesigner/designercore/include/qmlitemnode.h @@ -174,6 +174,7 @@ public: ModelNode targetTransition() const; void assignTargetFlowItem(const QmlFlowTargetNode &flowItem); QmlFlowItemNode flowItemParent() const; +private: void destroyTarget(); }; diff --git a/src/plugins/qmldesigner/designercore/model/modelresourcemanagement.cpp b/src/plugins/qmldesigner/designercore/model/modelresourcemanagement.cpp index a61f1001f96..27ac2e67abb 100644 --- a/src/plugins/qmldesigner/designercore/model/modelresourcemanagement.cpp +++ b/src/plugins/qmldesigner/designercore/model/modelresourcemanagement.cpp @@ -515,8 +515,7 @@ struct BindingFilter struct TargetFilter { TargetFilter(NodeDependencies &dependencies, Model *model) - : flowViewFlowActionAreaMetaInfo{model->flowViewFlowActionAreaMetaInfo()} - , flowViewFlowTransitionMetaInfo{model->flowViewFlowTransitionMetaInfo()} + : flowViewFlowTransitionMetaInfo{model->flowViewFlowTransitionMetaInfo()} , qtQuickPropertyChangesMetaInfo{model->qtQuickPropertyChangesMetaInfo()} , qtQuickTimelineKeyframeGroupMetaInfo{model->qtQuickTimelineKeyframeGroupMetaInfo()} , qtQuickPropertyAnimationMetaInfo{model->qtQuickPropertyAnimationMetaInfo()} diff --git a/src/plugins/qmldesigner/designercore/model/qmlitemnode.cpp b/src/plugins/qmldesigner/designercore/model/qmlitemnode.cpp index 826856428bf..c211a9e8fe0 100644 --- a/src/plugins/qmldesigner/designercore/model/qmlitemnode.cpp +++ b/src/plugins/qmldesigner/designercore/model/qmlitemnode.cpp @@ -748,7 +748,6 @@ void QmlFlowActionAreaNode::assignTargetFlowItem(const QmlFlowTargetNode &flowIt ModelNode transition = flowView.addTransition(flowParent.modelNode(), flowItem.modelNode()); - modelNode().bindingProperty("target").setExpression(transition.validId()); } diff --git a/tests/unit/tests/unittests/model/modelresourcemanagement-test.cpp b/tests/unit/tests/unittests/model/modelresourcemanagement-test.cpp index 40b94f872d5..fd3d3c70c35 100644 --- a/tests/unit/tests/unittests/model/modelresourcemanagement-test.cpp +++ b/tests/unit/tests/unittests/model/modelresourcemanagement-test.cpp @@ -280,7 +280,6 @@ INSTANTIATE_TEST_SUITE_P( ForTarget, testing::Values(TargetData{"QtQuick.Item", "QtQuick.PropertyChanges", "target"}, TargetData{"QtQuick.Item", "QtQuick.Timeline.KeyframeGroup", "target"}, - TargetData{"FlowView.FlowTransition", "FlowView.FlowActionArea", "target"}, TargetData{"QtQuick.Item", "QtQuick.PropertyAnimation", "target"}, TargetData{"FlowView.FlowItem", "FlowView.FlowTransition", "to"}, TargetData{"FlowView.FlowItem", "FlowView.FlowTransition", "from"}));