diff options
author | Thomas Hartmann <thomas.hartmann@qt.io> | 2021-12-14 15:52:31 +0100 |
---|---|---|
committer | Tim Jenssen <tim.jenssen@qt.io> | 2021-12-15 15:36:19 +0000 |
commit | 3b265858a056ccdb775c3f01277aac951a359e6a (patch) | |
tree | 975515b0c84c845ae1edc357cc66084eb5bb1b3e | |
parent | 50cd75325516e48132198ff3f2e2c5f8e29781d7 (diff) |
QmlDesigner: Fix crash
Create an id for nodes if keyframe is added.
Added missing ::executeInTransaction().
Using executeInTransaction() catches exceptions.
Task-number: QDS-5769
Change-Id: I395d98eec6ead091bd8578019ec3f958b4099db8
Reviewed-by: Tim Jenssen <tim.jenssen@qt.io>
-rw-r--r-- | src/plugins/qmldesigner/components/propertyeditor/propertyeditorcontextobject.cpp | 4 | ||||
-rw-r--r-- | src/plugins/qmldesigner/designercore/model/qmltimelinekeyframegroup.cpp | 4 |
2 files changed, 6 insertions, 2 deletions
diff --git a/src/plugins/qmldesigner/components/propertyeditor/propertyeditorcontextobject.cpp b/src/plugins/qmldesigner/components/propertyeditor/propertyeditorcontextobject.cpp index bdfa8fb202..b569ce37ba 100644 --- a/src/plugins/qmldesigner/components/propertyeditor/propertyeditorcontextobject.cpp +++ b/src/plugins/qmldesigner/components/propertyeditor/propertyeditorcontextobject.cpp @@ -317,7 +317,9 @@ void PropertyEditorContextObject::insertKeyframe(const QString &propertyName) QTC_ASSERT(timeline.isValid(), return ); QTC_ASSERT(selectedNode.isValid(), return ); - timeline.insertKeyframe(selectedNode, propertyName.toUtf8()); + rewriterView->executeInTransaction("PropertyEditorContextObject::insertKeyframe", [&]{ + timeline.insertKeyframe(selectedNode, propertyName.toUtf8()); + }); } int PropertyEditorContextObject::majorVersion() const diff --git a/src/plugins/qmldesigner/designercore/model/qmltimelinekeyframegroup.cpp b/src/plugins/qmldesigner/designercore/model/qmltimelinekeyframegroup.cpp index 924a4e0ee6..55e147eeee 100644 --- a/src/plugins/qmldesigner/designercore/model/qmltimelinekeyframegroup.cpp +++ b/src/plugins/qmldesigner/designercore/model/qmltimelinekeyframegroup.cpp @@ -74,7 +74,9 @@ void QmlTimelineKeyframeGroup::setTarget(const ModelNode &target) { QTC_ASSERT(isValid(), return ); - modelNode().bindingProperty("target").setExpression(target.id()); + ModelNode nonConstTarget = target; + + modelNode().bindingProperty("target").setExpression(nonConstTarget.validId()); } PropertyName QmlTimelineKeyframeGroup::propertyName() const |