From 147cbe93c243db447ab1e5a5585a8e987c25df74 Mon Sep 17 00:00:00 2001 From: Joshua Leung Date: Mon, 7 May 2007 11:59:43 +0000 Subject: == Action Editor - Bugfix #6660 == When trying to expand the IPO-curves for Shapekey Action Channels, Blender crashed due to that being a previously un-handled case. For some reason, the names of IPO curve channels are still not drawing on some machines. I've also disabled the display of shapekey channels when there is an action as the two used to overlap and muck up the drawing matrices of each other. --- source/blender/src/drawaction.c | 26 +++++++++++++++----------- source/blender/src/editipo_lib.c | 16 ++++++++++++++-- 2 files changed, 29 insertions(+), 13 deletions(-) (limited to 'source/blender/src') diff --git a/source/blender/src/drawaction.c b/source/blender/src/drawaction.c index cf76d69f60b..9ae34d59226 100644 --- a/source/blender/src/drawaction.c +++ b/source/blender/src/drawaction.c @@ -599,10 +599,10 @@ static void draw_channel_names(void) */ draw_action_channel_names(act); } - if ( (key = get_action_mesh_key()) ) { + else if ( (key = get_action_mesh_key()) ) { /* if there is a mesh selected with rvk's, - * then draw the RVK names - */ + * then draw the RVK names + */ draw_action_mesh_names(key); } @@ -953,7 +953,7 @@ void drawactionspace(ScrArea *sa, void *spacedata) * oughta fix it */ - if (key) { + if (!act && key) { if (G.v2d->cur.ymin < -CHANNELHEIGHT) G.v2d->cur.ymin = -CHANNELHEIGHT; @@ -1007,9 +1007,10 @@ void drawactionspace(ScrArea *sa, void *spacedata) check_action_context(G.saction); /* Draw channel strips */ - draw_channel_strips(G.saction); - - if (key) { + if (act) { + draw_channel_strips(G.saction); + } + else if (key) { /* if there is a mesh with rvk's selected, * then draw the key frames in the action window */ @@ -1048,15 +1049,18 @@ void drawactionspace(ScrArea *sa, void *spacedata) draw_channel_names(); if(sa->winx > 50 + NAMEWIDTH + SLIDERWIDTH) { - if (key) { + if (act) { + /* if there is an action, draw sliders for its + * ipo-curve channels in the action window + */ + action_icu_buts(G.saction); + } + else if (key) { /* if there is a mesh with rvk's selected, * then draw the key frames in the action window */ meshactionbuts(G.saction, OBACT, key); } - else if (act) { - action_icu_buts(G.saction); - } } } diff --git a/source/blender/src/editipo_lib.c b/source/blender/src/editipo_lib.c index 8707e5dd12c..96be44e1234 100644 --- a/source/blender/src/editipo_lib.c +++ b/source/blender/src/editipo_lib.c @@ -27,6 +27,8 @@ /* ********** General calls (minimal dependencies) for editing Ipos in Blender ************* */ +#include + #include "BLI_blenlib.h" #include "BLI_arithb.h" @@ -132,10 +134,20 @@ int geticon_ipo_blocktype(short blocktype) char *getname_ipocurve(IpoCurve *icu) { switch (icu->blocktype) { - case ID_OB: - return getname_ob_ei(icu->adrcode, 0); /* dummy 2nd arg */ + case ID_OB: + return getname_ob_ei(icu->adrcode, 0); /* dummy 2nd arg */ case ID_PO: return getname_ac_ei(icu->adrcode); + case ID_KE: + { + /* quick 'hack' - must find a better solution to this + * although shapekey ipo-curves can have names, + * we don't have access to that info yet. + */ + static char name[32]; + sprintf(name, "Key %d", icu->adrcode); + return name; + } default: /* fixme - add all of the other types! */ return NULL; -- cgit v1.2.3