forked from bartvdbraak/blender
Bugfix [#21276] The Tab key is not working in the Graph Editor when
the list of animated curves is closed At long last, this old bludger can be put out to pasture. I figured it would involve some of the visibility-filtering stuff I added, but this required a bit extra effort than anticipated.
This commit is contained in:
parent
ab2026bf42
commit
c48e146738
@ -1428,9 +1428,14 @@ static void setflag_anim_channels (bAnimContext *ac, short setting, short mode,
|
||||
* - but for Graph Editor, this gets used also from main region
|
||||
* where hierarchy doesn't apply [#21276]
|
||||
*/
|
||||
// FIXME: graph editor case
|
||||
// XXX: noduplis enabled so that results don't cancel, but will be problematic for some channels where only type differs
|
||||
filter= (ANIMFILTER_DATA_VISIBLE | ANIMFILTER_LIST_VISIBLE | ANIMFILTER_LIST_CHANNELS | ANIMFILTER_NODUPLIS);
|
||||
if ((ac->spacetype == SPACE_IPO) && (ac->regiontype != RGN_TYPE_CHANNELS)) {
|
||||
/* graph editor (case 2) */
|
||||
filter= (ANIMFILTER_DATA_VISIBLE | ANIMFILTER_LIST_CHANNELS | ANIMFILTER_CURVE_VISIBLE | ANIMFILTER_NODUPLIS);
|
||||
}
|
||||
else {
|
||||
/* standard case */
|
||||
filter= (ANIMFILTER_DATA_VISIBLE | ANIMFILTER_LIST_VISIBLE | ANIMFILTER_LIST_CHANNELS | ANIMFILTER_NODUPLIS);
|
||||
}
|
||||
if (onlysel) filter |= ANIMFILTER_SEL;
|
||||
ANIM_animdata_filter(ac, &anim_data, filter, ac->data, ac->datatype);
|
||||
|
||||
|
@ -964,10 +964,13 @@ static size_t animdata_filter_action (bAnimContext *ac, ListBase *anim_data, bDo
|
||||
filter_gmode= filter_mode;
|
||||
|
||||
/* if we care about the selection status of the channels,
|
||||
* but the group isn't expanded...
|
||||
* but the group isn't expanded (1)...
|
||||
* (1) this only matters if we actually care about the hierarchy though,
|
||||
* so if we're not filtering for that, then we shouldn't care, otherwise
|
||||
* cases like [#21276] won't work properly
|
||||
*/
|
||||
if ( (filter_mode & (ANIMFILTER_SEL|ANIMFILTER_UNSEL)) && /* care about selection status */
|
||||
(EXPANDED_AGRP(ac, agrp)==0) ) /* group isn't expanded */
|
||||
if ( ((filter_mode & ANIMFILTER_LIST_VISIBLE) && EXPANDED_AGRP(ac, agrp)==0) && /* care about hierarchy but group isn't expanded */
|
||||
(filter_mode & (ANIMFILTER_SEL|ANIMFILTER_UNSEL)) ) /* care about selection status */
|
||||
{
|
||||
/* if the group itself isn't selected appropriately, we shouldn't consider it's children either */
|
||||
if (ANIMCHANNEL_SELOK(SEL_AGRP(agrp)) == 0)
|
||||
|
@ -183,25 +183,6 @@ typedef enum eAnim_KeyType {
|
||||
|
||||
/* ----------------- Filtering -------------------- */
|
||||
|
||||
#if 0 /// old
|
||||
/* filtering flags - under what circumstances should a channel be added */
|
||||
typedef enum eAnimFilter_Flags {
|
||||
ANIMFILTER_VISIBLE = (1<<0), /* should channels be visible (in terms of hierarchy only) */
|
||||
//ANIMFILTER_SEL = (1<<1), /* should channels be selected */
|
||||
//ANIMFILTER_UNSEL = (1<<2), /* should channels be NOT selected */
|
||||
//ANIMFILTER_FOREDIT = (1<<3), /* does editable status matter */
|
||||
ANIMFILTER_CURVESONLY = (1<<4), /* don't include summary-channels, etc. */ // double-check on how this goes for actedit
|
||||
ANIMFILTER_CHANNELS = (1<<5), /* make list for interface drawing */
|
||||
//ANIMFILTER_ACTGROUPED = (1<<6), /* belongs to the active actiongroup */
|
||||
ANIMFILTER_CURVEVISIBLE = (1<<7), /* F-Curve is visible for editing/viewing in Graph Editor */
|
||||
//ANIMFILTER_ACTIVE = (1<<8), /* channel should be 'active' */
|
||||
//ANIMFILTER_ANIMDATA = (1<<9), /* only return the underlying AnimData blocks (not the tracks, etc.) data comes from */
|
||||
ANIMFILTER_NLATRACKS = (1<<10), /* only include NLA-tracks */
|
||||
//ANIMFILTER_SELEDIT = (1<<11), /* link editability with selected status */
|
||||
//ANIMFILTER_NODUPLIS = (1<<12), /* duplicate entries for animation data attached to multi-user blocks must not occur */
|
||||
} eAnimFilter_Flags;
|
||||
#endif
|
||||
|
||||
/* filtering flags - under what circumstances should a channel be returned */
|
||||
// TODO: flag to just test if there's any channel inside worthy of being added - return 1 as soon as this is encountered, but don't add
|
||||
typedef enum eAnimFilter_Flags {
|
||||
|
Loading…
Reference in New Issue
Block a user