Fix T72897: Move Channels operator moves Grease Pencil Layers wrongly

This operator was pending of fix.
This commit is contained in:
Antonio Vazquez 2020-01-04 22:02:03 +01:00
parent 952bc89d6e
commit 5c66739b78
Notes: blender-bot 2023-02-14 05:04:52 +01:00
Referenced by issue #72916, Fluid/Smoke modifier has an "Apply" button, which is misleading/dangerous (only meaningful for mesh-baked liquid domains)
Referenced by issue #72897, Move Channels operator moves Grease Pencil Layers, causing keymap conflict
2 changed files with 22 additions and 3 deletions

View File

@ -542,8 +542,8 @@ class DOPESHEET_MT_gpencil_channel(Menu):
# layout.operator("anim.channels_expand")
# layout.operator("anim.channels_collapse")
# layout.separator()
#layout.operator_menu_enum("anim.channels_move", "direction", text="Move...")
layout.separator()
layout.operator_menu_enum("anim.channels_move", "direction", text="Move...")
class DOPESHEET_MT_gpencil_frame(Menu):

View File

@ -898,6 +898,23 @@ static AnimChanRearrangeFp rearrange_get_mode_func(eRearrangeAnimChan_Mode mode)
}
}
/* get rearranging function, given 'rearrange' mode (grease pencil is inverted) */
static AnimChanRearrangeFp rearrange_gpencil_get_mode_func(eRearrangeAnimChan_Mode mode)
{
switch (mode) {
case REARRANGE_ANIMCHAN_TOP:
return rearrange_island_bottom;
case REARRANGE_ANIMCHAN_UP:
return rearrange_island_down;
case REARRANGE_ANIMCHAN_DOWN:
return rearrange_island_up;
case REARRANGE_ANIMCHAN_BOTTOM:
return rearrange_island_top;
default:
return NULL;
}
}
/* Rearrange Islands Generics ------------------------------------- */
/* add channel into list of islands */
@ -1331,7 +1348,7 @@ static void rearrange_gpencil_channels(bAnimContext *ac, eRearrangeAnimChan_Mode
int filter;
/* get rearranging function */
AnimChanRearrangeFp rearrange_func = rearrange_get_mode_func(mode);
AnimChanRearrangeFp rearrange_func = rearrange_gpencil_get_mode_func(mode);
if (rearrange_func == NULL) {
return;
@ -1364,6 +1381,8 @@ static void rearrange_gpencil_channels(bAnimContext *ac, eRearrangeAnimChan_Mode
/* free GPD channel data */
ANIM_animdata_freelist(&anim_data);
WM_main_add_notifier(NC_GPENCIL | ND_DATA | NA_EDITED, NULL);
}
/* ------------------- */