diff --git a/src/plugins/qmldesigner/designercore/include/qmltimeline.h b/src/plugins/qmldesigner/designercore/include/qmltimeline.h index 1d9bb4b718f..4c3a7bfa869 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 d84f3387411..ce981c2b93a 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()) {