diff --git a/src/frame.c b/src/frame.c index 5ee74bda42b..8abafa90c05 100644 --- a/src/frame.c +++ b/src/frame.c @@ -1547,19 +1547,6 @@ do_switch_frame (Lisp_Object frame, int track, int for_deletion, Lisp_Object nor move_minibuffers_onto_frame (sf, frame, for_deletion); - /* If the selected window in the target frame is its mini-window, we move - to a different window, the most recently used one, unless there is a - valid active minibuffer in the mini-window. */ - if (EQ (f->selected_window, f->minibuffer_window) - /* The following test might fail if the mini-window contains a - non-active minibuffer. */ - && NILP (Fminibufferp (XWINDOW (f->minibuffer_window)->contents, Qt))) - { - Lisp_Object w = call1 (Qget_mru_window, frame); - if (WINDOW_LIVE_P (w)) /* W can be nil in minibuffer-only frames. */ - Fset_frame_selected_window (frame, w, Qnil); - } - /* After setting `selected_frame`, we're temporarily in an inconsistent state where (selected-window) != (frame-selected-window). Until this invariant is restored we should be very careful not to run ELisp code. diff --git a/src/minibuf.c b/src/minibuf.c index 6784c4be68c..0e5636fd8a4 100644 --- a/src/minibuf.c +++ b/src/minibuf.c @@ -209,6 +209,15 @@ move_minibuffers_onto_frame (struct frame *of, Lisp_Object frame, zip_minibuffer_stacks (f->minibuffer_window, of->minibuffer_window); if (for_deletion && XFRAME (MB_frame) != of) MB_frame = frame; + if (!for_deletion + && MINI_WINDOW_P (XWINDOW (FRAME_SELECTED_WINDOW (of)))) + { + Lisp_Object old_frame; + XSETFRAME (old_frame, of); + Fset_frame_selected_window (old_frame, + Fframe_first_window (old_frame), Qnil); + } + } } diff --git a/src/xdisp.c b/src/xdisp.c index 1b198df4076..b2e971ed392 100644 --- a/src/xdisp.c +++ b/src/xdisp.c @@ -13598,7 +13598,7 @@ gui_consider_frame_title (Lisp_Object frame) false); record_unwind_protect (unwind_format_mode_line, format_data); - Fselect_window (f->selected_window, Qt); + /* Fselect_window (f->selected_window, Qt); */ set_buffer_internal_1 (XBUFFER (XWINDOW (f->selected_window)->contents)); fmt = (FRAME_ICONIFIED_P (f) && !EQ (Vicon_title_format, Qt) ? Vicon_title_format : Vframe_title_format);