MCPcopy Create free account
hub / github.com/NetHack/NetHack / curs_nonselect_menu_action

Function curs_nonselect_menu_action

win/curses/cursdial.c:1371–1503  ·  view source on GitHub ↗

split out from menu_get_selections() so that perm_invent scrolling can be controlled from outside the normal menu activity [groundwork; ultimately not used that way, only from menu_get_seletions() itself] */

Source from the content-addressed store, hash-verified

1369 can be controlled from outside the normal menu activity [groundwork;
1370 ultimately not used that way, only from menu_get_seletions() itself] */
1371boolean
1372curs_nonselect_menu_action(
1373 WINDOW *win,
1374 void *menu_v, /* generic pointer; caller might not know type 'nhmenu' */
1375 int how,
1376 int curletter,
1377 int *curpage_p,
1378 char selectors[256],
1379 int *num_selected_p)
1380{
1381 nhmenu_item *menu_item_ptr;
1382 nhmenu *menu = (nhmenu *) menu_v;
1383 boolean dismiss = FALSE;
1384 int menucmd = (curletter <= 0 || curletter >= 255) ? curletter
1385 : (int) (uchar) map_menu_cmd(curletter);
1386
1387 switch (menucmd) {
1388 case KEY_ESC:
1389 *num_selected_p = -1;
1390 dismiss = TRUE;
1391 break;
1392 case '\n':
1393 case '\r':
1394 dismiss = TRUE;
1395 break;
1396#ifdef NCURSES_MOUSE_VERSION
1397 case KEY_MOUSE: {
1398 MEVENT mev;
1399
1400 if (getmouse(&mev) == OK && how != PICK_NONE) {
1401 if (wmouse_trafo(win, &mev.y, &mev.x, FALSE)) {
1402 int y = mev.y;
1403
1404 menu_item_ptr = get_menuitem_y(win, menu, *curpage_p, y);
1405
1406 if (menu_item_ptr) {
1407 if (how == PICK_ONE) {
1408 menu_clear_selections(menu);
1409 menu_select_deselect(win, menu_item_ptr,
1410 SELECT, *curpage_p);
1411 *num_selected_p = 1;
1412 dismiss = TRUE;
1413 } else {
1414 menu_select_deselect(win, menu_item_ptr,
1415 INVERT, *curpage_p);
1416 }
1417 }
1418 }
1419 }
1420 break;
1421 } /* case KEY_MOUSE */
1422#endif /*NCURSES_MOUSE_VERSION*/
1423 case KEY_RIGHT:
1424 case KEY_NPAGE:
1425 case MENU_NEXT_PAGE:
1426 case ' ':
1427 if (*curpage_p < menu->num_pages) {
1428 ++(*curpage_p);

Callers 1

menu_get_selectionsFunction · 0.85

Calls 8

map_menu_cmdFunction · 0.85
get_menuitem_yFunction · 0.85
menu_clear_selectionsFunction · 0.85
menu_select_deselectFunction · 0.85
menu_display_pageFunction · 0.85
curses_line_input_dialogFunction · 0.85
refreshFunction · 0.85
strstriFunction · 0.85

Tested by

no test coverage detected