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] */
| 1369 | can be controlled from outside the normal menu activity [groundwork; |
| 1370 | ultimately not used that way, only from menu_get_seletions() itself] */ |
| 1371 | boolean |
| 1372 | curs_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); |
no test coverage detected