From 1fe4db0231b2d8438aeed9585654f100121fbf49 Mon Sep 17 00:00:00 2001 From: Thomas Hartmann Date: Wed, 14 Sep 2022 15:51:47 +0200 Subject: QmlDesigner: Add removeKeyframesForTargetAndProperty MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This allows to remove keyframe groups for a specific property. This is required if a dynamic property is removed. Change-Id: Ic3a2609241df21d81954ab18e4aeec1c47bfe336 Reviewed-by: Henning Gründl Reviewed-by: Thomas Hartmann Reviewed-by: Qt CI Bot --- src/plugins/qmldesigner/designercore/include/qmltimeline.h | 4 ++++ src/plugins/qmldesigner/designercore/model/qmltimeline.cpp | 9 +++++++++ 2 files changed, 13 insertions(+) diff --git a/src/plugins/qmldesigner/designercore/include/qmltimeline.h b/src/plugins/qmldesigner/designercore/include/qmltimeline.h index 1d9bb4b718..4c3a7bfa86 100644 --- a/src/plugins/qmldesigner/designercore/include/qmltimeline.h +++ b/src/plugins/qmldesigner/designercore/include/qmltimeline.h @@ -65,6 +65,10 @@ public: QList allTargets() const; QList keyframeGroupsForTarget(const ModelNode &target) const; void destroyKeyframesForTarget(const ModelNode &target); + + void removeKeyframesForTargetAndProperty(const ModelNode &target, + const PropertyName &propertyName); + static bool hasActiveTimeline(AbstractView *view); bool isRecording() const; diff --git a/src/plugins/qmldesigner/designercore/model/qmltimeline.cpp b/src/plugins/qmldesigner/designercore/model/qmltimeline.cpp index d84f338741..ce981c2b93 100644 --- a/src/plugins/qmldesigner/designercore/model/qmltimeline.cpp +++ b/src/plugins/qmldesigner/designercore/model/qmltimeline.cpp @@ -208,6 +208,15 @@ void QmlTimeline::destroyKeyframesForTarget(const ModelNode &target) frames.destroy(); } +void QmlTimeline::removeKeyframesForTargetAndProperty(const ModelNode &target, + const PropertyName &propertyName) +{ + for (QmlTimelineKeyframeGroup frames : keyframeGroupsForTarget(target)) { + if (frames.propertyName() == propertyName) + frames.destroy(); + } +} + bool QmlTimeline::hasActiveTimeline(AbstractView *view) { if (view && view->isAttached()) { -- cgit v1.2.1