Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJoshua Leung <aligorith@gmail.com>2012-07-03 17:47:13 +0400
committerJoshua Leung <aligorith@gmail.com>2012-07-03 17:47:13 +0400
commit44ca0a43287020747db479a2206c6b2587547e59 (patch)
tree12c62f2c41d0ff886bab627be55c8eebb47fae8c /source/blender/blenloader
parent69ca014d5096329e6f0b54c3e16d654e924c3478 (diff)
Fix for the "black F-Curves" bug on undo
(From personal stash of bugs - since early 2.5 versions) F-Curve colors get applied only on Graph Editor "refresh()". In some cases, undo was reverting back to a state where the colors had not yet been set. In these cases, there would be no refresh() after that undo (until expanding a channel or some other similar action), resulting in "black F-Curves" appearing. So, now we force such an update after undo to ensure that the curves never display black. (Noticed while investigating another bug for Mango related to CLIP_OT_constraint_to_fcurve not sending notifiers required when new F-Curves are added)
Diffstat (limited to 'source/blender/blenloader')
-rw-r--r--source/blender/blenloader/intern/readfile.c9
1 files changed, 7 insertions, 2 deletions
diff --git a/source/blender/blenloader/intern/readfile.c b/source/blender/blenloader/intern/readfile.c
index 836f723327e..7133f79f880 100644
--- a/source/blender/blenloader/intern/readfile.c
+++ b/source/blender/blenloader/intern/readfile.c
@@ -5533,6 +5533,11 @@ void lib_link_screen_restore(Main *newmain, bScreen *curscreen, Scene *curscene)
if (ads->filter_grp)
ads->filter_grp = restore_pointer_by_name(newmain, (ID *)ads->filter_grp, 0);
}
+
+ /* force recalc of list of channels (i.e. includes calculating F-Curve colors)
+ * thus preventing the "black curves" problem post-undo
+ */
+ sipo->flag |= SIPO_TEMP_NEEDCHANSYNC;
}
else if (sl->spacetype == SPACE_BUTS) {
SpaceButs *sbuts = (SpaceButs *)sl;
@@ -5547,10 +5552,10 @@ void lib_link_screen_restore(Main *newmain, bScreen *curscreen, Scene *curscene)
SpaceAction *saction = (SpaceAction *)sl;
saction->action = restore_pointer_by_name(newmain, (ID *)saction->action, 1);
- saction->ads.source= restore_pointer_by_name(newmain, (ID *)saction->ads.source, 1);
+ saction->ads.source = restore_pointer_by_name(newmain, (ID *)saction->ads.source, 1);
if (saction->ads.filter_grp)
- saction->ads.filter_grp= restore_pointer_by_name(newmain, (ID *)saction->ads.filter_grp, 0);
+ saction->ads.filter_grp = restore_pointer_by_name(newmain, (ID *)saction->ads.filter_grp, 0);
/* force recalc of list of channels, potentially updating the active action