do_switch_frame: before leaving mini-window, check other (mru) window is live
This fixes bug#55684. There, with a minibuffer-only frame at start up, Emacs tried to switch to this frame, whose selected window was the mini-window. There is no other active window in this frame, so the attempt to swith to another window failed. * src/frame.c (do_switch_frame): On switching to a frame whose selected window is as above, before selecting the most recently used window, check this ostensible window is an actual live window. Otherwise leave the mini-window selected.
This commit is contained in:
parent
908e2e09d0
commit
f9ee83bfb9
1 changed files with 7 additions and 1 deletions
|
@ -1568,8 +1568,14 @@ do_switch_frame (Lisp_Object frame, int track, int for_deletion, Lisp_Object nor
|
|||
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)))
|
||||
Fset_frame_selected_window (frame, call1 (Qget_mru_window, frame), Qnil);
|
||||
{
|
||||
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);
|
||||
}
|
||||
|
||||
Fselect_window (f->selected_window, norecord);
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue