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;
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
sipo->ads->source = (ID *)(G.main->scene.first); // FIXME: this is a really nasty hack here for now...
}
+ /* force immediate init of any invalid F-Curve colors */
+ sipo->flag |= SIPO_TEMP_NEEDCHANSYNC;
ED_area_tag_refresh(sa);
}
if (wmn->data == ND_SPACE_GRAPH)
ED_area_tag_redraw(sa);
break;
-
+ case NC_WINDOW:
+ if (sipo->flag & SIPO_TEMP_NEEDCHANSYNC) {
+ /* force redraw/refresh after undo/redo - prevents "black curve" problem */
+ ED_area_tag_refresh(sa);
+ }
+ break;
+
// XXX: restore the case below if not enough updates occur...
//default:
// if (wmn->data==ND_KEYS)