(window_loop) <GET_BUFFER_WINDOW>: Prefer to return
authorGerd Moellmann <gerd@gnu.org>
Tue, 13 Feb 2001 15:44:58 +0000 (15:44 +0000)
committerGerd Moellmann <gerd@gnu.org>
Tue, 13 Feb 2001 15:44:58 +0000 (15:44 +0000)
the selected window if it is showing the buffer in question.

src/ChangeLog
src/window.c

index 91a3aec..670e999 100644 (file)
@@ -1,5 +1,8 @@
 2001-02-13  Gerd Moellmann  <gerd@gnu.org>
 
+       * window.c (window_loop) <GET_BUFFER_WINDOW>: Prefer to return
+       the selected window if it is showing the buffer in question.
+
        * dired.c (directory_files_internal): Initialize errno.
        (toplevel): Include errno.h.
 
index 769aa56..4ddca71 100644 (file)
@@ -1669,7 +1669,6 @@ MINIBUF neither nil nor t means never include the minibuffer window.")
   (frame, minibuf, window)
      Lisp_Object frame, minibuf, window;
 {
-
   if (NILP (window))
     window = selected_window;
   if (NILP (frame))
@@ -1764,13 +1763,6 @@ window_loop (type, obj, mini, frames)
   else
     window = FRAME_SELECTED_WINDOW (SELECTED_FRAME ());
 
-  /* Figure out the last window we're going to mess with.  Since
-     Fnext_window, given the same options, is guaranteed to go in a
-     ring, we can just use Fprevious_window to find the last one.
-
-     We can't just wait until we hit the first window again, because
-     it might be deleted.  */
-
   windows = window_list_1 (window, mini ? Qt : Qnil, frame_arg);
   GCPRO1 (windows);
   best_window = Qnil;
@@ -1799,8 +1791,12 @@ window_loop (type, obj, mini, frames)
                    ? EQ (window, minibuf_window)
                    : 1))
              {
-               UNGCPRO;
-               return window;
+               if (NILP (best_window))
+                 best_window = window;
+               else if (EQ (window, selected_window))
+                 /* For compatibility with 20.x, prefer to return
+                    selected-window.  */
+                 best_window = window;
              }
            break;