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>
This commit is contained in:
Thomas Hartmann
2021-12-14 15:52:31 +01:00
committed by Tim Jenssen
parent 50cd753255
commit 3b265858a0
2 changed files with 6 additions and 2 deletions

View File

@@ -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

View File

@@ -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