Fix Pushdown of an action from the Action Editor lacks immediate updates

The issue reported was that the recently introduced manual framerange of
an action (see rB5d59b38605d6) was not having an immediate effect in
case the action was pushed down from the Action Editor and only showed
its effects after e.g. saving and reloading the file. However doing the
same thing (pushing down the action) was working fine when done from the
NLA.

Now bring pushdown in sync (in terms of DEG update tagging) between the
Action Editor and the NLA, meaning that now both the owner and the
action are tagged when pushdown happens from the Action Editor as well.

Fixes T96964.

Maniphest Tasks: T96964

Differential Revision: https://developer.blender.org/D14564
This commit is contained in:
Philipp Oeser 2022-04-06 11:40:31 +02:00
parent fbca6aeb7c
commit 4fd3d96f46
Notes: blender-bot 2023-02-14 05:25:44 +01:00
Referenced by issue #96964, Setting a manual frame range in an action is only recognized after reloading the file
2 changed files with 10 additions and 0 deletions

View File

@ -5,6 +5,7 @@ set(INC
../../blenkernel
../../blenlib
../../blentranslation
../../depsgraph
../../gpu
../../makesdna
../../makesrna

View File

@ -45,6 +45,8 @@
#include "ED_mask.h"
#include "ED_screen.h"
#include "DEG_depsgraph.h"
#include "WM_api.h"
#include "WM_types.h"
@ -335,6 +337,13 @@ static int action_pushdown_exec(bContext *C, wmOperator *op)
/* action can be safely added */
BKE_nla_action_pushdown(adt, ID_IS_OVERRIDE_LIBRARY(adt_id_owner));
struct Main *bmain = CTX_data_main(C);
DEG_id_tag_update_ex(bmain, adt_id_owner, ID_RECALC_ANIMATION);
/* The action needs updating too, as FCurve modifiers are to be reevaluated. They won't extend
* beyond the NLA strip after pushing down to the NLA. */
DEG_id_tag_update_ex(bmain, &adt->action->id, ID_RECALC_ANIMATION);
/* Stop displaying this action in this editor
* NOTE: The editor itself doesn't set a user...
*/