* Fixed a crash in the action window when attempting to manipulate keys with no action loaded.

This addresses bug #1354 - Thanks to gabio for the report
This commit is contained in:
Matt Ebb 2004-06-05 07:13:05 +00:00
parent 3038507b1b
commit 25c9dd464e
2 changed files with 50 additions and 35 deletions

@ -2327,6 +2327,7 @@ void winqreadactionspace(ScrArea *sa, void *spacedata, BWinEvent *evt)
break;
case DKEY:
if (act) {
if (key) {
if (G.qual & LR_SHIFTKEY && mval[0]>ACTWIDTH) {
duplicate_meshchannel_keys(key);
@ -2338,9 +2339,11 @@ void winqreadactionspace(ScrArea *sa, void *spacedata, BWinEvent *evt)
remake_action_ipos(act);
}
}
}
break;
case GKEY:
if (act) {
if (mval[0]>=ACTWIDTH) {
if (key) {
transform_meshchannel_keys('g', key);
@ -2349,6 +2352,7 @@ void winqreadactionspace(ScrArea *sa, void *spacedata, BWinEvent *evt)
transform_actionchannel_keys ('g');
}
}
}
break;
case HKEY:
@ -2381,6 +2385,7 @@ void winqreadactionspace(ScrArea *sa, void *spacedata, BWinEvent *evt)
break;
case SKEY:
if (act) {
if (mval[0]>=ACTWIDTH) {
if (key) {
transform_meshchannel_keys('s', key);
@ -2389,6 +2394,7 @@ void winqreadactionspace(ScrArea *sa, void *spacedata, BWinEvent *evt)
transform_actionchannel_keys ('s');
}
}
}
break;
/*** set the Ipo type ***/

@ -383,24 +383,34 @@ static uiBlock *action_selectmenu(void *arg_unused)
static void do_action_keymenu_transformmenu(void *arg, int event)
{
SpaceAction *saction;
bAction *act;
Key *key;
key = get_action_mesh_key();
saction= curarea->spacedata.first;
act=saction->action;
switch(event)
{
case ACTMENU_KEY_TRANSFORM_MOVE:
if (act) {
if (key) {
transform_meshchannel_keys('g', key);
} else {
transform_actionchannel_keys ('g');
}
}
break;
case ACTMENU_KEY_TRANSFORM_SCALE:
if (act) {
if (key) {
transform_meshchannel_keys('s', key);
} else {
transform_actionchannel_keys ('s');
}
}
break;
}
@ -574,13 +584,13 @@ static void do_action_keymenu(void *arg, int event)
if (!saction)
return;
act = saction->action;
key = get_action_mesh_key();
switch(event)
{
case ACTMENU_KEY_DUPLICATE:
if (act) {
if (key) {
duplicate_meshchannel_keys(key);
}
@ -588,6 +598,7 @@ static void do_action_keymenu(void *arg, int event)
duplicate_actionchannel_keys();
remake_action_ipos(act);
}
}
break;
case ACTMENU_KEY_DELETE:
@ -601,8 +612,6 @@ static void do_action_keymenu(void *arg, int event)
case ACTMENU_KEY_BAKE:
bake_action_with_client (G.saction->action, OBACT, 0.01);
break;
break;
}
}