| 941 | /* Determine if menu will require multiple pages to display */ |
| 942 | |
| 943 | static boolean |
| 944 | menu_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 */ |
no test coverage detected