From 84afc458fa3927234e46d5a85ac0660d2646c999 Mon Sep 17 00:00:00 2001 From: Bill Currie Date: Fri, 25 Mar 2011 18:02:59 +0900 Subject: [PATCH] Allow the menus to overide the Escape key. --- include/QF/console.h | 2 +- libs/console/client.c | 10 ++++++---- libs/console/menu.c | 18 +++++++++--------- 3 files changed, 16 insertions(+), 14 deletions(-) diff --git a/include/QF/console.h b/include/QF/console.h index 819d214be..932c9b832 100644 --- a/include/QF/console.h +++ b/include/QF/console.h @@ -139,7 +139,7 @@ void Menu_Init (void); void Menu_Load (void); void Menu_Draw (struct view_s *view); void Menu_Draw_Hud (struct view_s *view); -void Menu_KeyEvent (knum_t key, short unicode, qboolean down); +int Menu_KeyEvent (knum_t key, short unicode, qboolean down); void Menu_Enter (void); void Menu_Leave (void); diff --git a/libs/console/client.c b/libs/console/client.c index 4e1c06c34..bc64f8bec 100644 --- a/libs/console/client.c +++ b/libs/console/client.c @@ -460,6 +460,11 @@ C_KeyEvent (knum_t key, short unicode, qboolean down) if (!down) return; + if (key_dest == key_menu) { + if (Menu_KeyEvent (key, unicode, down)) + return; + } + if (down && (key == QFK_ESCAPE || unicode == '\x1b')) { switch (key_dest) { case key_menu: @@ -488,11 +493,8 @@ C_KeyEvent (knum_t key, short unicode, qboolean down) } if (key_dest == key_menu) { - Menu_KeyEvent (key, unicode, down); return; - } - - if (key_dest == key_message) { + } else if (key_dest == key_message) { if (chat_team) { il = say_team_line; } else { diff --git a/libs/console/menu.c b/libs/console/menu.c index fc21bad8f..79c9beae0 100644 --- a/libs/console/menu.c +++ b/libs/console/menu.c @@ -619,14 +619,14 @@ Menu_Draw_Hud (view_t *view) run_menu_post (); } -void +int Menu_KeyEvent (knum_t key, short unicode, qboolean down) { menu_item_t *item; int ret; if (!menu) - return; + return 0; if (menu->keyevent) { run_menu_pre (); PR_RESET_PARAMS (&menu_pr_state); @@ -637,7 +637,7 @@ Menu_KeyEvent (knum_t key, short unicode, qboolean down) ret = R_INT (&menu_pr_state); run_menu_post (); if (ret) - return; + return 1; } else if (menu->items && menu->items[menu->cur_item]->func && menu->items[menu->cur_item]->allkeys) { run_menu_pre (); @@ -652,21 +652,21 @@ Menu_KeyEvent (knum_t key, short unicode, qboolean down) ret = R_INT (&menu_pr_state); run_menu_post (); if (ret) - return; + return 1; } if (!menu || !menu->items) - return; + return 0; switch (key) { case QFK_DOWN: case QFM_WHEEL_DOWN: menu->cur_item++; menu->cur_item %= menu->num_items; - break; + return 1; case QFK_UP: case QFM_WHEEL_UP: menu->cur_item += menu->num_items - 1; menu->cur_item %= menu->num_items; - break; + return 1; case QFK_RETURN: case QFM_BUTTON1: { @@ -690,9 +690,9 @@ Menu_KeyEvent (knum_t key, short unicode, qboolean down) } } } - break; + return 1; default: - break; + return 0; } }