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

Function menu_is_multipage

win/curses/cursdial.c:943–975  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

941/* Determine if menu will require multiple pages to display */
942
943static boolean
944menu_is_multipage(nhmenu *menu, int width, int height)
945{
946 int num_lines;
947 int curline = 0, accel_per_page = 0;
948 nhmenu_item *menu_item_ptr = menu->entries;
949
950 if (menu->prompt && *menu->prompt) {
951 curline += curses_num_lines(menu->prompt, width) + 1;
952 }
953
954 while (menu_item_ptr != NULL) {
955 menu_item_ptr->line_num = curline;
956 if (menu_item_ptr->identifier.a_void == NULL) {
957 num_lines = curses_num_lines(menu_item_ptr->str, width);
958 } else {
959 if (menu_item_ptr->accelerator != GOLD_SYM) {
960 if (++accel_per_page > MAX_ACCEL_PER_PAGE)
961 break;
962 }
963 /* Add space for accelerator */
964 num_lines = curses_num_lines(menu_item_ptr->str, width - 4);
965 }
966 menu_item_ptr->num_lines = num_lines;
967 curline += num_lines;
968 menu_item_ptr = menu_item_ptr->next_item;
969 if (curline > height
970 || (curline > height - 2 && height == menu_max_height())) {
971 break;
972 }
973 }
974 return (menu_item_ptr != NULL) ? TRUE : FALSE;
975}
976
977
978/* Determine which entries go on which page, and total number of pages */

Callers 3

menu_determine_pagesFunction · 0.85
menu_win_sizeFunction · 0.85

Calls 2

curses_num_linesFunction · 0.85
menu_max_heightFunction · 0.85

Tested by

no test coverage detected