mirror of
git://git.sv.gnu.org/emacs.git
synced 2026-01-06 11:50:51 -08:00
Fix frame focus redirection with shared minibuffer windows (Bug#24500)
* src/frame.c (do_switch_frame): Redirect frame focus also when the frame switched to has its minibuffer window on the selected frame. * src/window.c (candidate_window_p): To qualify as candidate it's not sufficient for the window's frame to just share the minibuffer window - it must be active as well.
This commit is contained in:
parent
027c350e0c
commit
421c0512f7
2 changed files with 10 additions and 3 deletions
|
|
@ -1160,7 +1160,12 @@ do_switch_frame (Lisp_Object frame, int track, int for_deletion, Lisp_Object nor
|
|||
if (FRAMEP (xfocus))
|
||||
{
|
||||
focus = FRAME_FOCUS_FRAME (XFRAME (xfocus));
|
||||
if (FRAMEP (focus) && XFRAME (focus) == SELECTED_FRAME ())
|
||||
if ((FRAMEP (focus) && XFRAME (focus) == SELECTED_FRAME ())
|
||||
/* Redirect frame focus also when FRAME has its minibuffer
|
||||
window on the selected frame (see Bug#24500). */
|
||||
|| (NILP (focus)
|
||||
&& EQ (FRAME_MINIBUF_WINDOW (XFRAME (frame)),
|
||||
sf->selected_window)))
|
||||
Fredirect_frame_focus (xfocus, frame);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -2377,8 +2377,10 @@ candidate_window_p (Lisp_Object window, Lisp_Object owindow,
|
|||
== FRAME_TERMINAL (XFRAME (selected_frame)));
|
||||
}
|
||||
else if (WINDOWP (all_frames))
|
||||
candidate_p = (EQ (FRAME_MINIBUF_WINDOW (f), all_frames)
|
||||
|| EQ (XWINDOW (all_frames)->frame, w->frame)
|
||||
/* To qualify as candidate, it's not sufficient for WINDOW's frame
|
||||
to just share the minibuffer window - it must be active as well
|
||||
(see Bug#24500). */
|
||||
candidate_p = (EQ (XWINDOW (all_frames)->frame, w->frame)
|
||||
|| EQ (XWINDOW (all_frames)->frame, FRAME_FOCUS_FRAME (f)));
|
||||
else if (FRAMEP (all_frames))
|
||||
candidate_p = EQ (all_frames, w->frame);
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue