]> git.eshelyaron.com Git - emacs.git/commitdiff
(unshow_buffer): Clear last_selected_window slot, maybe.
authorRichard M. Stallman <rms@gnu.org>
Mon, 2 Sep 1996 05:13:11 +0000 (05:13 +0000)
committerRichard M. Stallman <rms@gnu.org>
Mon, 2 Sep 1996 05:13:11 +0000 (05:13 +0000)
(Fset_window_buffer): Set last_selected_window slot.
(Fselect_window): Set last_selected_window slot.
(delete_all_subwindows): Maybe call unshow_buffer.

src/window.c

index 9b59640497db414ae6858a4de8fa6865b128b236..925b4d6aed9bca106060d13118f8c3f2a6beeb57 100644 (file)
@@ -692,6 +692,9 @@ unshow_buffer (w)
   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 @@ BUFFER can be a buffer or buffer name.")
     }
 
   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 @@ before each command.")
   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 @@ delete_all_subwindows (w)
 
   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