From 38ab08d1bf538c301e7b1be739c7877b0eb411df Mon Sep 17 00:00:00 2001 From: "Richard M. Stallman" Date: Mon, 23 May 1994 05:41:58 +0000 Subject: [PATCH] (window_loop, UNSHOW_BUFFER case): Put prev change in #ifdef MULTI_FRAME. --- src/window.c | 21 +++++++++++++++++---- 1 file changed, 17 insertions(+), 4 deletions(-) diff --git a/src/window.c b/src/window.c index 3994f3b8088..133229af5f6 100644 --- a/src/window.c +++ b/src/window.c @@ -1265,14 +1265,27 @@ window_loop (type, obj, mini, frames) { /* Find another buffer to show in this window. */ Lisp_Object another_buffer; + FRAME_PTR f = XFRAME (WINDOW_FRAME (XWINDOW (w))); another_buffer = Fother_buffer (obj, Qnil); if (NILP (another_buffer)) another_buffer = Fget_buffer_create (build_string ("*scratch*")); - XWINDOW (w)->dedicated = Qnil; - Fset_window_buffer (w, another_buffer); - if (EQ (w, selected_window)) - Fset_buffer (XWINDOW (w)->buffer); +#ifdef MULTI_FRAME + /* If this window is dedicated, and in a frame of its own, + kill the frame. */ + if (EQ (w, FRAME_ROOT_WINDOW (f)) + && XWINDOW (w)->dedicated + && other_visible_frames (f)) + Fdelete_frame (WINDOW_FRAME (XWINDOW (w)), Qnil); + else +#endif + { + /* Otherwise show a different buffer in the window. */ + XWINDOW (w)->dedicated = Qnil; + Fset_window_buffer (w, another_buffer); + if (EQ (w, selected_window)) + Fset_buffer (XWINDOW (w)->buffer); + } } break; } -- 2.39.5