* Fixed a little problem when using both F* keys and header buttons

to change buttons tabs wouldn't switch quite right.
This commit is contained in:
Matt Ebb 2005-11-10 20:07:17 +00:00
parent 0dc288371f
commit 095eb2400a
3 changed files with 30 additions and 23 deletions

@ -119,7 +119,7 @@ typedef struct SpaceButs {
short texnr; short texnr;
char texfrom, showgroup; char texfrom, showgroup;
short rectx, recty; /* preview render */ short rectx, recty; /* preview render */
unsigned int *rect; unsigned int *rect;
short cury, modeltype; short cury, modeltype;
@ -127,7 +127,8 @@ typedef struct SpaceButs {
short scriptblock; short scriptblock;
short scaflag; short scaflag;
short re_align, pad1; short re_align, pad1;
int pad2;
int oldkeypress; /* for keeping track of the sub tab key cycling */
char texact, tab[7]; /* storing tabs for each context */ char texact, tab[7]; /* storing tabs for each context */

@ -132,6 +132,12 @@ void do_buts_buttons(short event)
break; break;
case B_BUTSPREVIEW: case B_BUTSPREVIEW:
BIF_preview_changed(G.buts); BIF_preview_changed(G.buts);
G.buts->oldkeypress = 0;
scrarea_queue_headredraw(curarea);
scrarea_queue_winredraw(curarea);
break;
case B_CONTEXT_SWITCH:
G.buts->oldkeypress = 0;
scrarea_queue_headredraw(curarea); scrarea_queue_headredraw(curarea);
scrarea_queue_winredraw(curarea); scrarea_queue_winredraw(curarea);
break; break;
@ -599,12 +605,12 @@ void buts_buttons(void)
// xco+=XIC; // xco+=XIC;
uiBlockBeginAlign(block); uiBlockBeginAlign(block);
uiDefIconButS(block, ROW, B_REDR, ICON_GAME, xco, 0, XIC, YIC, &(G.buts->mainb), 0.0, (float)CONTEXT_LOGIC, 0, 0, "Logic (F4) "); uiDefIconButS(block, ROW, B_CONTEXT_SWITCH, ICON_GAME, xco, 0, XIC, YIC, &(G.buts->mainb), 0.0, (float)CONTEXT_LOGIC, 0, 0, "Logic (F4) ");
uiDefIconButS(block, ROW, B_REDR, ICON_SCRIPT, xco+=XIC, 0, XIC, YIC, &(G.buts->mainb), 0.0, (float)CONTEXT_SCRIPT, 0, 0, "Script "); uiDefIconButS(block, ROW, B_CONTEXT_SWITCH, ICON_SCRIPT, xco+=XIC, 0, XIC, YIC, &(G.buts->mainb), 0.0, (float)CONTEXT_SCRIPT, 0, 0, "Script ");
uiDefIconButS(block, ROW, B_REDR, ICON_MATERIAL_DEHLT,xco+=XIC, 0, XIC, YIC, &(G.buts->mainb), 0.0, (float)CONTEXT_SHADING, 0, 0, "Shading (F5) "); uiDefIconButS(block, ROW, B_CONTEXT_SWITCH, ICON_MATERIAL_DEHLT,xco+=XIC, 0, XIC, YIC, &(G.buts->mainb), 0.0, (float)CONTEXT_SHADING, 0, 0, "Shading (F5) ");
uiDefIconButS(block, ROW, B_REDR, ICON_OBJECT, xco+=XIC, 0, XIC, YIC, &(G.buts->mainb), 0.0, (float)CONTEXT_OBJECT, 0, 0, "Object (F7) "); uiDefIconButS(block, ROW, B_CONTEXT_SWITCH, ICON_OBJECT, xco+=XIC, 0, XIC, YIC, &(G.buts->mainb), 0.0, (float)CONTEXT_OBJECT, 0, 0, "Object (F7) ");
uiDefIconButS(block, ROW, B_REDR, ICON_EDIT, xco+=XIC, 0, XIC, YIC, &(G.buts->mainb), 0.0, (float)CONTEXT_EDITING, 0, 0, "Editing (F9) "); uiDefIconButS(block, ROW, B_CONTEXT_SWITCH, ICON_EDIT, xco+=XIC, 0, XIC, YIC, &(G.buts->mainb), 0.0, (float)CONTEXT_EDITING, 0, 0, "Editing (F9) ");
uiDefIconButS(block, ROW, B_REDR, ICON_SCENE_DEHLT, xco+=XIC, 0, XIC, YIC, &(G.buts->mainb), 0.0, (float)CONTEXT_SCENE, 0, 0, "Scene (F10) "); uiDefIconButS(block, ROW, B_CONTEXT_SWITCH, ICON_SCENE_DEHLT, xco+=XIC, 0, XIC, YIC, &(G.buts->mainb), 0.0, (float)CONTEXT_SCENE, 0, 0, "Scene (F10) ");
xco+= XIC; xco+= XIC;
@ -613,15 +619,15 @@ void buts_buttons(void)
switch(G.buts->mainb) { switch(G.buts->mainb) {
case CONTEXT_SCENE: case CONTEXT_SCENE:
uiBlockBeginAlign(block); uiBlockBeginAlign(block);
uiDefIconButC(block, ROW, B_REDR, ICON_SCENE, xco+=XIC, t_base, XIC, YIC, &(G.buts->tab[CONTEXT_SCENE]), 1.0, (float)TAB_SCENE_RENDER, 0, 0, "Render buttons "); uiDefIconButC(block, ROW, B_CONTEXT_SWITCH, ICON_SCENE, xco+=XIC, t_base, XIC, YIC, &(G.buts->tab[CONTEXT_SCENE]), 1.0, (float)TAB_SCENE_RENDER, 0, 0, "Render buttons ");
uiDefIconButC(block, ROW, B_REDR, ICON_ANIM, xco+=XIC, t_base, XIC, YIC, &(G.buts->tab[CONTEXT_SCENE]), 1.0, (float)TAB_SCENE_ANIM, 0, 0, "Anim/playback buttons"); uiDefIconButC(block, ROW, B_CONTEXT_SWITCH, ICON_ANIM, xco+=XIC, t_base, XIC, YIC, &(G.buts->tab[CONTEXT_SCENE]), 1.0, (float)TAB_SCENE_ANIM, 0, 0, "Anim/playback buttons");
uiDefIconButC(block, ROW, B_REDR, ICON_SOUND, xco+=XIC, t_base, XIC, YIC, &(G.buts->tab[CONTEXT_SCENE]), 1.0, (float)TAB_SCENE_SOUND, 0, 0, "Sound block buttons"); uiDefIconButC(block, ROW, B_CONTEXT_SWITCH, ICON_SOUND, xco+=XIC, t_base, XIC, YIC, &(G.buts->tab[CONTEXT_SCENE]), 1.0, (float)TAB_SCENE_SOUND, 0, 0, "Sound block buttons");
break; break;
case CONTEXT_OBJECT: case CONTEXT_OBJECT:
uiBlockBeginAlign(block); uiBlockBeginAlign(block);
uiDefIconButC(block, ROW, B_REDR, ICON_OBJECT, xco+=XIC, t_base, XIC, YIC, &(G.buts->tab[CONTEXT_OBJECT]), 1.0, (float)TAB_OBJECT_OBJECT, 0, 0, "Object buttons "); uiDefIconButC(block, ROW, B_CONTEXT_SWITCH, ICON_OBJECT, xco+=XIC, t_base, XIC, YIC, &(G.buts->tab[CONTEXT_OBJECT]), 1.0, (float)TAB_OBJECT_OBJECT, 0, 0, "Object buttons ");
uiDefIconButC(block, ROW, B_REDR, ICON_EFFECTS, xco+=XIC, t_base, XIC, YIC, &(G.buts->tab[CONTEXT_OBJECT]), 1.0, (float)TAB_OBJECT_PHYSICS, 0, 0, "Physics buttons"); uiDefIconButC(block, ROW, B_CONTEXT_SWITCH, ICON_EFFECTS, xco+=XIC, t_base, XIC, YIC, &(G.buts->tab[CONTEXT_OBJECT]), 1.0, (float)TAB_OBJECT_PHYSICS, 0, 0, "Physics buttons");
break; break;
case CONTEXT_SHADING: case CONTEXT_SHADING:
@ -629,7 +635,7 @@ void buts_buttons(void)
uiDefIconButC(block, ROW, B_BUTSPREVIEW, ICON_LAMP, xco+=XIC, t_base, XIC, YIC, &(G.buts->tab[CONTEXT_SHADING]), 1.0, (float)TAB_SHADING_LAMP, 0, 0, "Lamp buttons"); uiDefIconButC(block, ROW, B_BUTSPREVIEW, ICON_LAMP, xco+=XIC, t_base, XIC, YIC, &(G.buts->tab[CONTEXT_SHADING]), 1.0, (float)TAB_SHADING_LAMP, 0, 0, "Lamp buttons");
uiDefIconButC(block, ROW, B_BUTSPREVIEW, ICON_MATERIAL, xco+=XIC, t_base, XIC, YIC, &(G.buts->tab[CONTEXT_SHADING]), 1.0, (float)TAB_SHADING_MAT, 0, 0, "Material buttons"); uiDefIconButC(block, ROW, B_BUTSPREVIEW, ICON_MATERIAL, xco+=XIC, t_base, XIC, YIC, &(G.buts->tab[CONTEXT_SHADING]), 1.0, (float)TAB_SHADING_MAT, 0, 0, "Material buttons");
uiDefIconButC(block, ROW, B_BUTSPREVIEW, ICON_TEXTURE, xco+=XIC, t_base, XIC, YIC, &(G.buts->tab[CONTEXT_SHADING]), 1.0, (float)TAB_SHADING_TEX, 0, 0, "Texture buttons(F6)"); uiDefIconButC(block, ROW, B_BUTSPREVIEW, ICON_TEXTURE, xco+=XIC, t_base, XIC, YIC, &(G.buts->tab[CONTEXT_SHADING]), 1.0, (float)TAB_SHADING_TEX, 0, 0, "Texture buttons(F6)");
uiDefIconButC(block, ROW, B_REDR, ICON_RADIO,xco+=XIC, t_base, XIC, YIC, &(G.buts->tab[CONTEXT_SHADING]), 1.0, (float)TAB_SHADING_RAD, 0, 0, "Radiosity buttons"); uiDefIconButC(block, ROW, B_CONTEXT_SWITCH, ICON_RADIO,xco+=XIC, t_base, XIC, YIC, &(G.buts->tab[CONTEXT_SHADING]), 1.0, (float)TAB_SHADING_RAD, 0, 0, "Radiosity buttons");
uiDefIconButC(block, ROW, B_BUTSPREVIEW, ICON_WORLD, xco+=XIC, t_base, XIC, YIC, &(G.buts->tab[CONTEXT_SHADING]), 1.0, (float)TAB_SHADING_WORLD, 0, 0, "World buttons"); uiDefIconButC(block, ROW, B_BUTSPREVIEW, ICON_WORLD, xco+=XIC, t_base, XIC, YIC, &(G.buts->tab[CONTEXT_SHADING]), 1.0, (float)TAB_SHADING_WORLD, 0, 0, "World buttons");
break; break;

@ -167,9 +167,6 @@ void free_soundspace(SpaceSound *ssound);
/* *************************************** */ /* *************************************** */
int oldkeypress; /* temporary var for checking to cycle between context tabs in extern_set_butspace() */
/* don't know yet how the handlers will evolve, for simplicity /* don't know yet how the handlers will evolve, for simplicity
i choose for an array with eventcodes, this saves in a file! i choose for an array with eventcodes, this saves in a file!
*/ */
@ -3320,7 +3317,7 @@ void extern_set_butspace(int fkey)
} }
/* if it's already in shading context, cycle between tabs with the same key */ /* if it's already in shading context, cycle between tabs with the same key */
if (oldkeypress == F5KEY) { if (sbuts->oldkeypress == F5KEY) {
if (sbuts->tab[CONTEXT_SHADING]==TAB_SHADING_LAMP) if (sbuts->tab[CONTEXT_SHADING]==TAB_SHADING_LAMP)
sbuts->tab[CONTEXT_SHADING]=TAB_SHADING_MAT; sbuts->tab[CONTEXT_SHADING]=TAB_SHADING_MAT;
@ -3334,10 +3331,13 @@ void extern_set_butspace(int fkey)
else if (sbuts->tab[CONTEXT_SHADING]==TAB_SHADING_WORLD) else if (sbuts->tab[CONTEXT_SHADING]==TAB_SHADING_WORLD)
sbuts->tab[CONTEXT_SHADING]=TAB_SHADING_LAMP; sbuts->tab[CONTEXT_SHADING]=TAB_SHADING_LAMP;
} }
else if (oldkeypress == F6KEY) { else if (sbuts->oldkeypress == F6KEY) {
sbuts->tab[CONTEXT_SHADING]=TAB_SHADING_MAT; sbuts->tab[CONTEXT_SHADING]=TAB_SHADING_MAT;
} }
else sbuts->mainb= CONTEXT_SHADING; else {
sbuts->mainb= CONTEXT_SHADING;
sbuts->tab[CONTEXT_SHADING]= TAB_SHADING_MAT;
}
} }
else if(fkey==F6KEY) { else if(fkey==F6KEY) {
@ -3346,7 +3346,7 @@ void extern_set_butspace(int fkey)
} }
else if(fkey==F7KEY) { else if(fkey==F7KEY) {
/* if it's already in object context, cycle between tabs with the same key */ /* if it's already in object context, cycle between tabs with the same key */
if (oldkeypress == F7KEY) { if (sbuts->oldkeypress == F7KEY) {
if (sbuts->tab[CONTEXT_OBJECT]==TAB_OBJECT_OBJECT) if (sbuts->tab[CONTEXT_OBJECT]==TAB_OBJECT_OBJECT)
sbuts->tab[CONTEXT_OBJECT]=TAB_OBJECT_PHYSICS; sbuts->tab[CONTEXT_OBJECT]=TAB_OBJECT_PHYSICS;
@ -3363,7 +3363,7 @@ void extern_set_butspace(int fkey)
else if(fkey==F9KEY) sbuts->mainb= CONTEXT_EDITING; else if(fkey==F9KEY) sbuts->mainb= CONTEXT_EDITING;
else if(fkey==F10KEY) { else if(fkey==F10KEY) {
/* if it's already in scene context, cycle between tabs with the same key */ /* if it's already in scene context, cycle between tabs with the same key */
if (oldkeypress == F10KEY) { if (sbuts->oldkeypress == F10KEY) {
if (sbuts->tab[CONTEXT_SCENE]==TAB_SCENE_RENDER) if (sbuts->tab[CONTEXT_SCENE]==TAB_SCENE_RENDER)
sbuts->tab[CONTEXT_SCENE]=TAB_SCENE_ANIM; sbuts->tab[CONTEXT_SCENE]=TAB_SCENE_ANIM;
@ -3375,7 +3375,7 @@ void extern_set_butspace(int fkey)
else sbuts->mainb= CONTEXT_SCENE; else sbuts->mainb= CONTEXT_SCENE;
} }
oldkeypress = fkey; sbuts->oldkeypress = fkey;
scrarea_queue_headredraw(sa); scrarea_queue_headredraw(sa);
scrarea_queue_winredraw(sa); scrarea_queue_winredraw(sa);