Fix T54065: NLA-Strip Control Curves would get disabled when name-based-filtering...
authorJoshua Leung <aligorith@gmail.com>
Thu, 15 Feb 2018 03:39:46 +0000 (16:39 +1300)
committerJoshua Leung <aligorith@gmail.com>
Wed, 21 Feb 2018 12:46:06 +0000 (01:46 +1300)
commit4d966aa19c36d86a407f419f88dc713f454e74a0
tree9b7e4e3f4d757147e131cafaf3effc430aa1f68f
parentf7354119cc8089dd7a788bacec0259db14bf07b8
Fix T54065: NLA-Strip Control Curves would get disabled when name-based-filtering is enabled

This bug took a while to track down. In the test file with this report,
the Nla-Strip Control Curve for strip time would get disabled if you
changed the NLA Editor to a second Graph Editor instance.

It turns out that because this second Graph Editor would have the
"filter fcurves by name" option enabled, this would trigger a lookup
of the referenced property's name (in order to test whether it matched
the filtering criteria). However, since that filtering code was written
before the introduction of these curves, it still assumed that the names
for these Control Curves should be handled the same as for standard FCurves.
Unfortunately, that doesn't work, as the property lookups fail if the standard
method is used - when the lookups fail, the F-Curves get tagged as being
invalid/disabled (and need to be reset using the "Revive Disabled FCurves"
operator).

Note: The changes in this patch look complicated, as I've had to shuffle
a bit of code around so that the name-filtering check can have access to
the additional info it needs. In the process, I've also removed the earlier
(hacky) approach where the control curves were getting added to a temp
buffer to get changed from normal FCurves to special ANIMTYPE_NLACURVES.
source/blender/editors/animation/anim_filter.c