Fix missing updates when muting/soloing/reordering NLA tracks.

This commit is contained in:
Alexander Gavrilov
2019-01-07 17:33:47 +03:00
parent 299ff7dcd1
commit 43a2a73fdb
3 changed files with 4 additions and 3 deletions

View File

@@ -4064,7 +4064,7 @@ static void achannel_setting_flush_widget_cb(bContext *C, void *ale_npoin, void
/* tag copy-on-write flushing (so that the settings will have an effect) */ /* tag copy-on-write flushing (so that the settings will have an effect) */
if (ale_setting->id) { if (ale_setting->id) {
DEG_id_tag_update(ale_setting->id, ID_RECALC_COPY_ON_WRITE); DEG_id_tag_update(ale_setting->id, ID_RECALC_ANIMATION | ID_RECALC_COPY_ON_WRITE);
} }
if (ale_setting->adt && ale_setting->adt->action) { if (ale_setting->adt && ale_setting->adt->action) {
/* action is it's own datablock, so has to be tagged specifically... */ /* action is it's own datablock, so has to be tagged specifically... */
@@ -4113,7 +4113,7 @@ static void achannel_nlatrack_solo_widget_cb(bContext *C, void *ale_poin, void *
/* send notifiers */ /* send notifiers */
DEG_id_tag_update(ale->id, ID_RECALC_ANIMATION | ID_RECALC_COPY_ON_WRITE); DEG_id_tag_update(ale->id, ID_RECALC_ANIMATION | ID_RECALC_COPY_ON_WRITE);
WM_event_add_notifier(C, NC_ANIMATION | ND_ANIMCHAN | NA_RENAME, NULL); WM_event_add_notifier(C, NC_ANIMATION | ND_NLA | NA_EDITED, NULL);
} }
/* callback for widget sliders - insert keyframes */ /* callback for widget sliders - insert keyframes */

View File

@@ -1355,6 +1355,7 @@ static int animchannels_rearrange_exec(bContext *C, wmOperator *op)
switch (ac.datatype) { switch (ac.datatype) {
case ANIMCONT_NLA: /* NLA-tracks only */ case ANIMCONT_NLA: /* NLA-tracks only */
rearrange_nla_channels(&ac, adt, mode); rearrange_nla_channels(&ac, adt, mode);
DEG_id_tag_update(ale->id, ID_RECALC_ANIMATION | ID_RECALC_COPY_ON_WRITE);
break; break;
case ANIMCONT_DRIVERS: /* Drivers list only */ case ANIMCONT_DRIVERS: /* Drivers list only */

View File

@@ -794,7 +794,7 @@ static void view3d_main_region_listener(
ED_region_tag_redraw(ar); ED_region_tag_redraw(ar);
break; break;
case ND_ANIMCHAN: case ND_ANIMCHAN:
if (wmn->action == NA_SELECTED) if (ELEM(wmn->action, NA_EDITED, NA_ADDED, NA_REMOVED, NA_SELECTED))
ED_region_tag_redraw(ar); ED_region_tag_redraw(ar);
break; break;
} }