aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorThomas Hartmann <thomas.hartmann@qt.io>2021-12-14 15:52:31 +0100
committerTim Jenssen <tim.jenssen@qt.io>2021-12-15 15:36:19 +0000
commit3b265858a056ccdb775c3f01277aac951a359e6a (patch)
tree975515b0c84c845ae1edc357cc66084eb5bb1b3e
parent50cd75325516e48132198ff3f2e2c5f8e29781d7 (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.cpp4
-rw-r--r--src/plugins/qmldesigner/designercore/model/qmltimelinekeyframegroup.cpp4
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