NLA: improve visibility of action & active channel
Selecting Action channel in NLA now sets the context in the N-panel. The actively selected channel is now also drawn in a different way, so that it's visible which one is selected. Old: - The NLA sidebar didn't refresh with the creation of a new action. - There was no indication of the action channel being selected. New: - NLA side bar now refreshed when keyframes are added (new action is created) - Clicking on the action channel now gives visual indication of being selected Reviewed By: RiggingDojo, sybren Maniphest Tasks: T97372 Differential Revision: https://developer.blender.org/D14820
This commit is contained in:
parent
46d7bcc068
commit
61e8310b75
Notes:
blender-bot
2023-02-14 03:00:45 +01:00
Referenced by issue #101275, Regression: Edited action in NLA ignored settings Referenced by issue #97372, NLA Sidebar tab doesn’t refresh on keyframe creation and there is no UI change to indicate action selection in the track list
|
@ -4020,6 +4020,8 @@ static bool acf_nlaaction_setting_valid(bAnimContext *UNUSED(ac),
|
|||
else {
|
||||
return false;
|
||||
}
|
||||
case ACHANNEL_SETTING_SELECT: /* selected */
|
||||
return true;
|
||||
|
||||
/* unsupported */
|
||||
default:
|
||||
|
@ -4040,6 +4042,9 @@ static int acf_nlaaction_setting_flag(bAnimContext *UNUSED(ac),
|
|||
*neg = true; /* XXX */
|
||||
return ADT_NLA_EDIT_NOMAP;
|
||||
|
||||
case ACHANNEL_SETTING_SELECT: /* selected */
|
||||
return ADT_UI_SELECTED;
|
||||
|
||||
default: /* unsupported */
|
||||
return 0;
|
||||
}
|
||||
|
|
|
@ -125,6 +125,7 @@ void ANIM_set_active_channel(bAnimContext *ac,
|
|||
case ANIMTYPE_DSHAIR:
|
||||
case ANIMTYPE_DSPOINTCLOUD:
|
||||
case ANIMTYPE_DSVOLUME:
|
||||
case ANIMTYPE_NLAACTION:
|
||||
case ANIMTYPE_DSSIMULATION: {
|
||||
/* need to verify that this data is valid for now */
|
||||
if (ale->adt) {
|
||||
|
@ -182,6 +183,7 @@ void ANIM_set_active_channel(bAnimContext *ac,
|
|||
case ANIMTYPE_DSHAIR:
|
||||
case ANIMTYPE_DSPOINTCLOUD:
|
||||
case ANIMTYPE_DSVOLUME:
|
||||
case ANIMTYPE_NLAACTION:
|
||||
case ANIMTYPE_DSSIMULATION: {
|
||||
/* need to verify that this data is valid for now */
|
||||
if (ale && ale->adt) {
|
||||
|
@ -199,7 +201,6 @@ void ANIM_set_active_channel(bAnimContext *ac,
|
|||
/* unhandled currently, but may be interesting */
|
||||
case ANIMTYPE_MASKLAYER:
|
||||
case ANIMTYPE_SHAPEKEY:
|
||||
case ANIMTYPE_NLAACTION:
|
||||
break;
|
||||
|
||||
/* other types */
|
||||
|
@ -312,6 +313,7 @@ static eAnimChannels_SetFlag anim_channels_selection_flag_for_toggle(const ListB
|
|||
case ANIMTYPE_DSHAIR:
|
||||
case ANIMTYPE_DSPOINTCLOUD:
|
||||
case ANIMTYPE_DSVOLUME:
|
||||
case ANIMTYPE_NLAACTION:
|
||||
case ANIMTYPE_DSSIMULATION: {
|
||||
if ((ale->adt) && (ale->adt->flag & ADT_UI_SELECTED)) {
|
||||
return ACHANNEL_SETFLAG_CLEAR;
|
||||
|
@ -339,7 +341,7 @@ static void anim_channels_select_set(bAnimContext *ac,
|
|||
eAnimChannels_SetFlag sel)
|
||||
{
|
||||
bAnimListElem *ale;
|
||||
|
||||
|
||||
for (ale = anim_data.first; ale; ale = ale->next) {
|
||||
switch (ale->type) {
|
||||
case ANIMTYPE_SCENE: {
|
||||
|
@ -420,6 +422,7 @@ static void anim_channels_select_set(bAnimContext *ac,
|
|||
case ANIMTYPE_DSHAIR:
|
||||
case ANIMTYPE_DSPOINTCLOUD:
|
||||
case ANIMTYPE_DSVOLUME:
|
||||
case ANIMTYPE_NLAACTION:
|
||||
case ANIMTYPE_DSSIMULATION: {
|
||||
/* need to verify that this data is valid for now */
|
||||
if (ale->adt) {
|
||||
|
|
|
@ -107,6 +107,7 @@ bool nla_panel_context(const bContext *C,
|
|||
found = 1;
|
||||
break;
|
||||
}
|
||||
case ANIMTYPE_NLAACTION:
|
||||
case ANIMTYPE_SCENE: /* Top-Level Widgets doubling up as datablocks */
|
||||
case ANIMTYPE_OBJECT:
|
||||
case ANIMTYPE_DSMAT: /* Datablock AnimData Expanders */
|
||||
|
|
Loading…
Reference in New Issue