if (g.cached_pickinv_win == WIN_ERR)
g.cached_pickinv_win = create_nhwindow(NHW_MENU);
win = g.cached_pickinv_win;
- show_gold = TRUE;
} else {
win = WIN_INVEN;
menu_behavior = MENU_BEHAVE_PERMINV;
void
prepare_perminvent(winid window)
{
- win_request_info *wri UNUSED;
+ win_request_info *wri;
if (!done_setting_perminv_flags) {
wri_info = zerowri;
- /*TEMPORARY*/
- char *envtmp = nh_getenv("TTYINV");
- wri_info.fromcore.invmode = envtmp ? atoi(envtmp) : InvNormal;
+#if defined(TTY_PERM_INVENT)
+ if (WINDOWPORT(tty)) {
+ /*TEMPORARY*/
+ char *envtmp = nh_getenv("TTYINV");
+
+ wri_info.fromcore.invmode = envtmp ? atoi(envtmp) : InvNormal;
+ } else
+#endif
+ wri_info.fromcore.invmode = InvShowGold;
/* relay the mode settings to the window port */
wri = ctrl_nhwindow(window, set_mode, &wri_info);
+ nhUse(wri);
done_setting_perminv_flags = 1;
}
}
if (current_menu == NULL) {
impossible(
"curses_display_nhmenu: attempt to display nonexistent menu");
- return '\033';
+ return -1; /* not ESC which falsely claims 27 items were selected */
}
menu_item_ptr = current_menu->entries;
if (menu_item_ptr == NULL) {
impossible("curses_display_nhmenu: attempt to display empty menu");
- return '\033';
+ return -1;
}
/* Reset items to unselected to clear out selections from previous
selected = (MENU_ITEM_P *) alloc((unsigned)
(num_chosen * sizeof (MENU_ITEM_P)));
count = 0;
-
menu_item_ptr = current_menu->entries;
while (menu_item_ptr != NULL) {
if (menu_item_ptr->selected) {
if (count == num_chosen) {
impossible("curses_display_nhmenu: Selected items "
- "exceeds expected number");
- break;
+ "exceeds expected number");
+ break;
}
selected[count].item = menu_item_ptr->identifier;
selected[count].count = menu_item_ptr->count;
if (count != num_chosen) {
impossible(
"curses_display_nhmenu: Selected items less than expected number");
+ num_chosen = min(count, num_chosen);
}
}
if (curses_is_menu(wid) || curses_is_text(wid)) {
curses_end_menu(wid, "");
- curses_select_menu(wid, PICK_NONE, &selected);
+ (void) curses_select_menu(wid, PICK_NONE, &selected);
return;
}