diff --git a/doc/fixes36.2 b/doc/fixes36.2 index 92096d3f1..904ac86c1 100644 --- a/doc/fixes36.2 +++ b/doc/fixes36.2 @@ -236,6 +236,7 @@ X11: allow mouse wheel scrolling to work in menus by default X11: handle paged menu control keys X11: remember perm_invent window geometry X11: handle X errors via panic +X11: don't reuse perm_invent window for picking an object General New Features diff --git a/win/X11/winmenu.c b/win/X11/winmenu.c index 2447c225c..e2f405ba1 100644 --- a/win/X11/winmenu.c +++ b/win/X11/winmenu.c @@ -957,6 +957,23 @@ menu_item **menu_list; 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; /* collect group accelerators; for PICK_NONE, they're ignored;