forked from bartvdbraak/blender
Bugfixes for recent commits:
* Insert Key on Selected Channels in Action Editor was broken * Transform/Select All tools in Action Editor were broken as result of filtering changes. * Set Visibility operator, when used from Graph Editor now does similar things to the TabKey lock/unlock operator with regards to the flags it uses for filtering
This commit is contained in:
parent
c48e146738
commit
5021dd3476
@ -1236,9 +1236,20 @@ static int animchannels_visibility_set_exec(bContext *C, wmOperator *UNUSED(op))
|
||||
ANIM_animdata_filter(&ac, &all_data, filter, ac.data, ac.datatype);
|
||||
|
||||
/* hide all channels not selected
|
||||
* - restrict this to only applying on settings we can get to in the list
|
||||
* - hierarchy matters if we're doing this from the channels region
|
||||
* since we only want to apply this to channels we can "see",
|
||||
* and have these affect their relatives
|
||||
* - but for Graph Editor, this gets used also from main region
|
||||
* where hierarchy doesn't apply, as for [#21276]
|
||||
*/
|
||||
filter= (ANIMFILTER_DATA_VISIBLE | ANIMFILTER_LIST_VISIBLE | ANIMFILTER_UNSEL | ANIMFILTER_NODUPLIS);
|
||||
if ((ac.spacetype == SPACE_IPO) && (ac.regiontype != RGN_TYPE_CHANNELS)) {
|
||||
/* graph editor (case 2) */
|
||||
filter= (ANIMFILTER_DATA_VISIBLE | ANIMFILTER_UNSEL | ANIMFILTER_CURVE_VISIBLE | ANIMFILTER_NODUPLIS);
|
||||
}
|
||||
else {
|
||||
/* standard case */
|
||||
filter= (ANIMFILTER_DATA_VISIBLE | ANIMFILTER_LIST_VISIBLE | ANIMFILTER_UNSEL | ANIMFILTER_NODUPLIS);
|
||||
}
|
||||
ANIM_animdata_filter(&ac, &anim_data, filter, ac.data, ac.datatype);
|
||||
|
||||
for (ale= anim_data.first; ale; ale= ale->next) {
|
||||
|
@ -984,7 +984,7 @@ static size_t animdata_filter_action (bAnimContext *ac, ListBase *anim_data, bDo
|
||||
* - pasting keyframes
|
||||
* - creating ghost curves in Graph Editor
|
||||
*/
|
||||
filter_gmode &= ~(ANIMFILTER_SEL|ANIMFILTER_UNSEL);
|
||||
filter_gmode &= ~(ANIMFILTER_SEL|ANIMFILTER_UNSEL|ANIMFILTER_LIST_VISIBLE);
|
||||
}
|
||||
|
||||
|
||||
@ -1007,7 +1007,7 @@ static size_t animdata_filter_action (bAnimContext *ac, ListBase *anim_data, bDo
|
||||
*/
|
||||
if (first_fcu) {
|
||||
/* add this group as a channel first */
|
||||
if (filter_mode & ANIMFILTER_LIST_CHANNELS) {
|
||||
if (filter_gmode & ANIMFILTER_LIST_CHANNELS) {
|
||||
/* filter selection of channel specially here again, since may be open and not subject to previous test */
|
||||
if ( ANIMCHANNEL_SELOK(SEL_AGRP(agrp)) ) {
|
||||
ale= make_new_animlistelem(agrp, ANIMTYPE_GROUP, owner_id);
|
||||
@ -1019,7 +1019,7 @@ static size_t animdata_filter_action (bAnimContext *ac, ListBase *anim_data, bDo
|
||||
}
|
||||
|
||||
/* there are some situations, where only the channels of the action group should get considered */
|
||||
if (!(filter_mode & ANIMFILTER_ACTGROUPED) || (agrp->flag & AGRP_ACTIVE)) {
|
||||
if (!(filter_gmode & ANIMFILTER_ACTGROUPED) || (agrp->flag & AGRP_ACTIVE)) {
|
||||
/* filters here are a bit convoulted...
|
||||
* - groups show a "summary" of keyframes beside their name which must accessable for tools which handle keyframes
|
||||
* - groups can be collapsed (and those tools which are only interested in channels rely on knowing that group is closed)
|
||||
@ -1027,16 +1027,19 @@ static size_t animdata_filter_action (bAnimContext *ac, ListBase *anim_data, bDo
|
||||
* cases when we should include F-Curves inside group:
|
||||
* - we don't care about hierarchy visibility (i.e. we just need the F-Curves present)
|
||||
* - group is expanded
|
||||
* - we care about hierarchy visibility, but we also just need the F-Curves present
|
||||
* within (i.e. transform/selectall). Fix relies on showing all channels option
|
||||
* only ever getting used for drawing, when hierarchy shouldn't show these channels
|
||||
*/
|
||||
if ( (!(filter_mode & ANIMFILTER_LIST_VISIBLE) || EXPANDED_AGRP(ac, agrp)) )
|
||||
if (!(filter_gmode & ANIMFILTER_LIST_VISIBLE) || EXPANDED_AGRP(ac, agrp) || !(filter_gmode & ANIMFILTER_LIST_CHANNELS))
|
||||
{
|
||||
/* for the Graph Editor, curves may be set to not be visible in the view to lessen clutter,
|
||||
* but to do this, we need to check that the group doesn't have it's not-visible flag set preventing
|
||||
* all its sub-curves to be shown
|
||||
*/
|
||||
if ( !(filter_mode & ANIMFILTER_CURVE_VISIBLE) || !(agrp->flag & AGRP_NOTVISIBLE) )
|
||||
if ( !(filter_gmode & ANIMFILTER_CURVE_VISIBLE) || !(agrp->flag & AGRP_NOTVISIBLE) )
|
||||
{
|
||||
if (!(filter_mode & ANIMFILTER_FOREDIT) || EDITABLE_AGRP(agrp)) {
|
||||
if (!(filter_gmode & ANIMFILTER_FOREDIT) || EDITABLE_AGRP(agrp)) {
|
||||
/* NOTE: filter_gmode is used here, not standard filter_mode, since there may be some flags that shouldn't apply */
|
||||
items += animdata_filter_fcurves(anim_data, ads, first_fcu, agrp, filter_gmode, owner_id);
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user