== 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.
This commit is contained in:
Joshua Leung 2007-05-07 11:59:43 +00:00
parent c006be1929
commit 147cbe93c2
2 changed files with 29 additions and 13 deletions

@ -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);
}
}
}

@ -27,6 +27,8 @@
/* ********** General calls (minimal dependencies) for editing Ipos in Blender ************* */
#include <stdio.h>
#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;