X11: Don't reuse perm_invent window for picking an object
The core wants to reuse the permanent inventory window for choosing an object from inventory, but the perm_invent window could be hard to focus - it could even be on another display! Instead, create a temporary new window from which the user can pick an inventory item.
This commit is contained in:
@@ -236,6 +236,7 @@ X11: allow mouse wheel scrolling to work in menus by default
|
|||||||
X11: handle paged menu control keys
|
X11: handle paged menu control keys
|
||||||
X11: remember perm_invent window geometry
|
X11: remember perm_invent window geometry
|
||||||
X11: handle X errors via panic
|
X11: handle X errors via panic
|
||||||
|
X11: don't reuse perm_invent window for picking an object
|
||||||
|
|
||||||
|
|
||||||
General New Features
|
General New Features
|
||||||
|
|||||||
@@ -957,6 +957,23 @@ menu_item **menu_list;
|
|||||||
|
|
||||||
create_menu_translation_tables();
|
create_menu_translation_tables();
|
||||||
|
|
||||||
|
if (menu_info->permi && how != PICK_NONE) {
|
||||||
|
/* Core is reusing perm_invent window for picking an item.
|
||||||
|
But it could be even on a different screen!
|
||||||
|
Create a new temp window for it instead. */
|
||||||
|
winid newwin = X11_create_nhwindow(NHW_MENU);
|
||||||
|
struct xwindow *nwp = &window_list[newwin];
|
||||||
|
X11_start_menu(newwin);
|
||||||
|
move_menu(&menu_info->new_menu, &nwp->menu_information->new_menu);
|
||||||
|
for (curr = nwp->menu_information->new_menu.base; curr; curr = curr->next)
|
||||||
|
curr->window = newwin;
|
||||||
|
nwp->menu_information->permi = FALSE;
|
||||||
|
int ret = X11_select_menu(newwin, how, menu_list);
|
||||||
|
destroy_menu_entry_widgets(nwp);
|
||||||
|
X11_destroy_nhwindow(newwin);
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
menu_info->how = (short) how;
|
menu_info->how = (short) how;
|
||||||
|
|
||||||
/* collect group accelerators; for PICK_NONE, they're ignored;
|
/* collect group accelerators; for PICK_NONE, they're ignored;
|
||||||
|
|||||||
Reference in New Issue
Block a user