* 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;
char texfrom, showgroup;
short rectx, recty; /* preview render */
unsigned int *rect;
short cury, modeltype;
@ -127,7 +127,8 @@ typedef struct SpaceButs {
short scriptblock;
short scaflag;
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 */

@ -132,6 +132,12 @@ void do_buts_buttons(short event)
break;
case B_BUTSPREVIEW:
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_winredraw(curarea);
break;
@ -599,12 +605,12 @@ void buts_buttons(void)
// xco+=XIC;
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_REDR, 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_REDR, 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_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_GAME, xco, 0, XIC, YIC, &(G.buts->mainb), 0.0, (float)CONTEXT_LOGIC, 0, 0, "Logic (F4) ");
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_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_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_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_CONTEXT_SWITCH, ICON_SCENE_DEHLT, xco+=XIC, 0, XIC, YIC, &(G.buts->mainb), 0.0, (float)CONTEXT_SCENE, 0, 0, "Scene (F10) ");
xco+= XIC;
@ -613,15 +619,15 @@ void buts_buttons(void)
switch(G.buts->mainb) {
case CONTEXT_SCENE:
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_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_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_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_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_SOUND, xco+=XIC, t_base, XIC, YIC, &(G.buts->tab[CONTEXT_SCENE]), 1.0, (float)TAB_SCENE_SOUND, 0, 0, "Sound block buttons");
break;
case CONTEXT_OBJECT:
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_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_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_EFFECTS, xco+=XIC, t_base, XIC, YIC, &(G.buts->tab[CONTEXT_OBJECT]), 1.0, (float)TAB_OBJECT_PHYSICS, 0, 0, "Physics buttons");
break;
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_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_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");
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
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 (oldkeypress == F5KEY) {
if (sbuts->oldkeypress == F5KEY) {
if (sbuts->tab[CONTEXT_SHADING]==TAB_SHADING_LAMP)
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)
sbuts->tab[CONTEXT_SHADING]=TAB_SHADING_LAMP;
}
else if (oldkeypress == F6KEY) {
else if (sbuts->oldkeypress == F6KEY) {
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) {
@ -3346,7 +3346,7 @@ void extern_set_butspace(int fkey)
}
else if(fkey==F7KEY) {
/* 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)
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==F10KEY) {
/* 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)
sbuts->tab[CONTEXT_SCENE]=TAB_SCENE_ANIM;
@ -3375,7 +3375,7 @@ void extern_set_butspace(int fkey)
else sbuts->mainb= CONTEXT_SCENE;
}
oldkeypress = fkey;
sbuts->oldkeypress = fkey;
scrarea_queue_headredraw(sa);
scrarea_queue_winredraw(sa);