changeset 16068:b19129a8c644

(unshow_buffer): Clear last_selected_window slot, maybe. (Fset_window_buffer): Set last_selected_window slot. (Fselect_window): Set last_selected_window slot. (delete_all_subwindows): Maybe call unshow_buffer.
author Richard M. Stallman <rms@gnu.org>
date Mon, 02 Sep 1996 05:13:11 +0000
parents 5c9f298c9875
children 8fe5e69de92a
files src/window.c
diffstat 1 files changed, 12 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- a/src/window.c	Mon Sep 02 05:11:15 1996 +0000
+++ b/src/window.c	Mon Sep 02 05:13:11 1996 +0000
@@ -692,6 +692,9 @@
   if (XBUFFER (buf) != XMARKER (w->pointm)->buffer)
     abort ();
 
+  if (w == XWINDOW (XBUFFER (buf)->last_selected_window))
+    XBUFFER (buf)->last_selected_window = Qnil;
+
 #if 0
   if (w == XWINDOW (selected_window)
       || ! EQ (buf, XWINDOW (selected_window)->buffer))
@@ -1842,6 +1845,10 @@
     }
 
   w->buffer = buffer;
+
+  if (EQ (window, selected_window))
+    XBUFFER (w->buffer)->last_selected_window = window;
+
   XSETFASTINT (w->window_end_pos, 0);
   w->window_end_valid = Qnil;
   XSETFASTINT (w->hscroll, 0);
@@ -1918,6 +1925,8 @@
   record_buffer (w->buffer);
   Fset_buffer (w->buffer);
 
+  XBUFFER (w->buffer)->last_selected_window = window;
+
   /* Go to the point recorded in the window.
      This is important when the buffer is in more
      than one window.  It also matters when
@@ -3221,6 +3230,9 @@
 
   w->height = w->buffer;       /* See Fset_window_configuration for excuse.  */
 
+  if (!NILP (w->buffer))
+    unshow_buffer (w);
+
   /* We set all three of these fields to nil, to make sure that we can
      distinguish this dead window from any live window.  Live leaf
      windows will have buffer set, and combination windows will have