navigate menus using TAB and TAB+LSHIFT

git-svn-id: svn://svn.code.sf.net/p/actiongame/code/trunk/ac@2815 e016b1c5-ed68-44aa-a2f7-31cac88cffde
This commit is contained in:
driAn
2008-10-04 13:02:38 +00:00
parent ba736f5e44
commit 3e91747d2d
4 changed files with 11 additions and 6 deletions
+2 -2
View File
@@ -391,13 +391,13 @@ void consolekey(int code, bool isdown, int cooked)
}
}
void keypress(int code, bool isdown, int cooked)
void keypress(int code, bool isdown, int cooked, SDLMod mod)
{
keym *haskey = NULL;
loopv(keyms) if(keyms[i].code==code) { haskey = &keyms[i]; break; }
if(haskey && haskey->pressed) execbind(*haskey, isdown); // allow pressed keys to release
else if(saycommandon) consolekey(code, isdown, cooked); // keystrokes go to commandline
else if(!menukey(code, isdown, cooked)) // keystrokes go to menu
else if(!menukey(code, isdown, cooked, mod)) // keystrokes go to menu
{
if(haskey) execbind(*haskey, isdown);
}
+1 -1
View File
@@ -414,7 +414,7 @@ void checkinput()
case SDL_KEYDOWN:
case SDL_KEYUP:
keypress(event.key.keysym.sym, event.key.state==SDL_PRESSED, event.key.keysym.unicode);
keypress(event.key.keysym.sym, event.key.state==SDL_PRESSED, event.key.keysym.unicode, event.key.keysym.mod);
break;
case SDL_ACTIVEEVENT:
+6 -1
View File
@@ -586,7 +586,7 @@ COMMAND(menuitemkeyinput, ARG_4STR);
COMMAND(menuitemcheckbox, ARG_3STR);
bool menukey(int code, bool isdown, int unicode)
bool menukey(int code, bool isdown, int unicode, SDLMod mod)
{
if(!curmenu) return false;
int n = curmenu->items.length(), menusel = curmenu->menusel;
@@ -617,6 +617,11 @@ bool menukey(int code, bool isdown, int unicode)
menusel++;
break;
case SDLK_TAB:
if(mod & KMOD_LSHIFT) menusel--;
else menusel++;
break;
case SDLK_1:
case SDLK_2:
case SDLK_3:
+2 -2
View File
@@ -68,7 +68,7 @@ extern int curscontext();
extern int execcontext;
// console
extern void keypress(int code, bool isdown, int cooked);
extern void keypress(int code, bool isdown, int cooked, SDLMod mod = KMOD_NONE);
extern void rendercommand(int x, int y);
extern void renderconsole();
extern char *getcurcommand();
@@ -97,7 +97,7 @@ extern bool menuvisible();
extern void menureset(void *menu);
extern void menumanual(void *menu, char *text, char *action = NULL, color *bgcolor = NULL, const char *desc = NULL);
extern void menuheader(void *menu, char *header = NULL, char *footer = NULL);
extern bool menukey(int code, bool isdown, int unicode);
extern bool menukey(int code, bool isdown, int unicode, SDLMod mod = KMOD_NONE);
extern void *addmenu(const char *name, const char *title = NULL, bool allowinput = true, void (__cdecl *refreshfunc)(void *, bool) = NULL, bool hotkeys = false, bool forwardkeys = false);
extern void rendermenumdl();
extern void menuset(void *m, bool save = true);