# HG changeset patch # User Richard M. Stallman # Date 738729851 0 # Node ID e2a40a3baa4b5a069eb5fcbf90e052e5e3f3f69f # Parent a3c8d3866d01e11a4dc9a22917d28cbc65c4220c (Ficonify_frame, Fmake_frame_invisible): Select some other frame. Move minibuffer off this frame. (Fhandle_switch_frame): Don't call Ffocus_frame. (Fredirect_frame_focus): Call Ffocus_frame here. diff -r a3c8d3866d01 -r e2a40a3baa4b src/frame.c --- a/src/frame.c Sun May 30 00:55:42 1993 +0000 +++ b/src/frame.c Sun May 30 02:44:11 1993 +0000 @@ -391,15 +391,6 @@ last_nonminibuf_frame = selected_frame; Fselect_window (XFRAME (frame)->selected_window); - - /* I think this should be done with a hook. */ -#ifdef HAVE_X_WINDOWS - if (FRAME_X_P (XFRAME (frame)) - && NILP (no_enter)) - { - Ffocus_frame (frame); - } -#endif choose_minibuf_frame (); /* We want to make sure that the next event generates a frame-switch @@ -832,6 +823,18 @@ CHECK_LIVE_FRAME (frame, 0); + /* Don't let the frame remain selected. */ + if (XFRAME (frame) == selected_frame) + Fhandle_switch_frame (next_frame (frame, Qt), Qnil); + + /* Don't allow minibuf_window to remain on a deleted frame. */ + if (EQ (XFRAME (frame)->minibuffer_window, minibuf_window)) + { + Fset_window_buffer (selected_frame->minibuffer_window, + XWINDOW (minibuf_window)->buffer); + minibuf_window = selected_frame->minibuffer_window; + } + /* I think this should be done with a hook. */ #ifdef HAVE_X_WINDOWS if (FRAME_X_P (XFRAME (frame))) @@ -853,6 +856,18 @@ CHECK_LIVE_FRAME (frame, 0); + /* Don't let the frame remain selected. */ + if (XFRAME (frame) == selected_frame) + Fhandle_switch_frame (next_frame (frame, Qt), Qnil); + + /* Don't allow minibuf_window to remain on a deleted frame. */ + if (EQ (XFRAME (frame)->minibuffer_window, minibuf_window)) + { + Fset_window_buffer (selected_frame->minibuffer_window, + XWINDOW (minibuf_window)->buffer); + minibuf_window = selected_frame->minibuffer_window; + } + /* I think this should be done with a hook. */ #ifdef HAVE_X_WINDOWS if (FRAME_X_P (XFRAME (frame))) @@ -971,6 +986,13 @@ XFRAME (frame)->focus_frame = focus_frame; + /* I think this should be done with a hook. */ +#ifdef HAVE_X_WINDOWS + if (!NILP (focus_frame) && ! EQ (focus_frame, frame) + && FRAME_X_P (XFRAME (focus_frame))) + Ffocus_frame (focus_frame); +#endif + if (frame_rehighlight_hook) (*frame_rehighlight_hook) ();