* 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,26 +2327,30 @@ void winqreadactionspace(ScrArea *sa, void *spacedata, BWinEvent *evt)
break;
case DKEY:
if (key) {
if (G.qual & LR_SHIFTKEY && mval[0]>ACTWIDTH) {
duplicate_meshchannel_keys(key);
if (act) {
if (key) {
if (G.qual & LR_SHIFTKEY && mval[0]>ACTWIDTH) {
duplicate_meshchannel_keys(key);
}
}
}
else {
if (G.qual & LR_SHIFTKEY && mval[0]>ACTWIDTH){
duplicate_actionchannel_keys();
remake_action_ipos(act);
else {
if (G.qual & LR_SHIFTKEY && mval[0]>ACTWIDTH){
duplicate_actionchannel_keys();
remake_action_ipos(act);
}
}
}
break;
case GKEY:
if (mval[0]>=ACTWIDTH) {
if (key) {
transform_meshchannel_keys('g', key);
}
else {
transform_actionchannel_keys ('g');
if (act) {
if (mval[0]>=ACTWIDTH) {
if (key) {
transform_meshchannel_keys('g', key);
}
else {
transform_actionchannel_keys ('g');
}
}
}
break;
@ -2380,13 +2384,15 @@ void winqreadactionspace(ScrArea *sa, void *spacedata, BWinEvent *evt)
}
break;
case SKEY:
if (mval[0]>=ACTWIDTH) {
if (key) {
transform_meshchannel_keys('s', key);
}
else {
transform_actionchannel_keys ('s');
case SKEY:
if (act) {
if (mval[0]>=ACTWIDTH) {
if (key) {
transform_meshchannel_keys('s', key);
}
else {
transform_actionchannel_keys ('s');
}
}
}
break;

@ -383,23 +383,33 @@ 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 (key) {
if (act) {
if (key) {
transform_meshchannel_keys('g', key);
} else {
} else {
transform_actionchannel_keys ('g');
}
}
break;
case ACTMENU_KEY_TRANSFORM_SCALE:
if (key) {
if (act) {
if (key) {
transform_meshchannel_keys('s', key);
} else {
} else {
transform_actionchannel_keys ('s');
}
}
break;
}
@ -574,19 +584,20 @@ 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 (key) {
duplicate_meshchannel_keys(key);
}
else {
duplicate_actionchannel_keys();
remake_action_ipos(act);
if (act) {
if (key) {
duplicate_meshchannel_keys(key);
}
else {
duplicate_actionchannel_keys();
remake_action_ipos(act);
}
}
break;
@ -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;
}
}