forked from bartvdbraak/blender
* 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:
parent
3038507b1b
commit
25c9dd464e
@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user