X11 menu hack for ':'

Same functionality as was recently implemented for tty.  If a
character like ':' is an explicit menu selector and the player
types it, select that menu entry rather than treating it as a
search request.  (Same for other menu commands like '>', but
offhand I can't think of anything besides container looting's
': - look inside' that uses any non-letter selectors other
than '$', which isn't used as a menu meta command.)
This commit is contained in:
PatR
2015-04-01 02:47:04 -07:00
parent 3f885ef583
commit d3205d98d6

View File

@@ -1,4 +1,4 @@
/* NetHack 3.5 winmenu.c $NHDT-Date$ $NHDT-Branch$:$NHDT-Revision$ */
/* NetHack 3.5 winmenu.c $NHDT-Date: 1427881480 2015/04/01 09:44:40 $ $NHDT-Branch: master $:$NHDT-Revision: 1.5 $ */
/* NetHack 3.5 winmenu.c $Date: 2009/05/06 10:55:53 $ $Revision: 1.5 $ */
/* SCCS Id: @(#)winmenu.c 3.5 1996/08/15 */
/* Copyright (c) Dean Luick, 1992 */
@@ -206,6 +206,7 @@ menu_key(w, event, params, num_params)
struct xwindow *wp;
char ch;
int count;
boolean selected_something;
wp = find_widget(w);
menu_info = wp->menu_information;
@@ -218,6 +219,13 @@ menu_key(w, event, params, num_params)
}
if (menu_info->is_active) { /* waiting for input */
/* first check for an explicit selector match, so that it won't be
overridden if it happens to duplicate a mapped menu command (':'
to look inside a container vs ':' to select via search string) */
for (curr = menu_info->curr_menu.base; curr; curr = curr->next)
if (curr->identifier.a_void != 0 && curr->selector == ch)
goto make_selection;
ch = map_menu_cmd(ch);
if (ch == '\033') { /* quit */
if (menu_info->counting) {
@@ -294,7 +302,8 @@ menu_key(w, event, params, num_params)
X11_nhbell();
return;
} else {
boolean selected_something = FALSE;
make_selection:
selected_something = FALSE;
for (count = 0, curr = menu_info->curr_menu.base; curr;
curr = curr->next, count++)
if (curr->identifier.a_void != 0 && curr->selector == ch) break;