diff options
author | Alexander Gavrilov <angavrilov@gmail.com> | 2019-05-02 14:51:43 +0300 |
---|---|---|
committer | Alexander Gavrilov <angavrilov@gmail.com> | 2019-05-02 14:56:25 +0300 |
commit | 6047653ec04efbc556506adad835cc83eb4c7dcf (patch) | |
tree | ed679c235fc8faa4379d2855a99037c0b0364259 /source/blender/editors/animation/anim_channels_edit.c | |
parent | 667af6cf411918ba181afc1a7d6bcb474f9fadb8 (diff) |
Fix T63904: Remove Animation should remove empty actions from objects.
Diffstat (limited to 'source/blender/editors/animation/anim_channels_edit.c')
-rw-r--r-- | source/blender/editors/animation/anim_channels_edit.c | 18 |
1 files changed, 16 insertions, 2 deletions
diff --git a/source/blender/editors/animation/anim_channels_edit.c b/source/blender/editors/animation/anim_channels_edit.c index 40abf8a12bb..6e0277d5fff 100644 --- a/source/blender/editors/animation/anim_channels_edit.c +++ b/source/blender/editors/animation/anim_channels_edit.c @@ -649,14 +649,28 @@ void ANIM_fcurve_delete_from_animdata(bAnimContext *ac, AnimData *adt, FCurve *f * channel list that are empty, and linger around long after the data they * are for has disappeared (and probably won't come back). */ + ANIM_remove_empty_action_from_animdata(adt); + } + + /* free the F-Curve itself */ + free_fcurve(fcu); +} + +/* If the action has no F-Curves, unlink it from AnimData if it did not + * come from a NLA Strip being tweaked. */ +bool ANIM_remove_empty_action_from_animdata(struct AnimData *adt) +{ + if (adt->action != NULL) { + bAction *act = adt->action; + if (BLI_listbase_is_empty(&act->curves) && (adt->flag & ADT_NLA_EDIT_ON) == 0) { id_us_min(&act->id); adt->action = NULL; + return true; } } - /* free the F-Curve itself */ - free_fcurve(fcu); + return false; } /* ************************************************************************** */ |