changeset 71339:0c8a94363573

(adjust_window_trailing_edge): Don't break out of the loop because there's no next window, if there are parallel windows. Do break out when WINDOW is nil.
author Richard M. Stallman <rms@gnu.org>
date Tue, 13 Jun 2006 23:07:56 +0000
parents cb9b414fad75
children 5de9b904c7ad
files src/window.c
diffstat 1 files changed, 17 insertions(+), 7 deletions(-) [+]
line wrap: on
line diff
--- a/src/window.c	Tue Jun 13 22:45:21 2006 +0000
+++ b/src/window.c	Tue Jun 13 23:07:56 2006 +0000
@@ -4279,15 +4279,17 @@
     {
       Lisp_Object first_parallel = Qnil;
 
+      if (NILP (window))
+	{
+	  /* This can happen if WINDOW on the previous iteration was
+	     at top level of the tree and we did not exit.  */
+	  Fset_window_configuration (old_config);
+	  error ("Specified window edge is fixed");
+	}
+
       p = XWINDOW (window);
       parent = p->parent;
 
-      if (NILP (XWINDOW (window)->next))
-	{
-	  Fset_window_configuration (old_config);
-	  error ("No other window following this one");
-	}
-
       /* See if this level has windows in parallel in the specified
 	 direction.  If so, set FIRST_PARALLEL to the first one.  */
       if (horiz_flag)
@@ -4301,6 +4303,14 @@
 	    first_parallel = XWINDOW (parent)->hchild;
 	}
 
+      /* If this level's succession is in the desired dimension,
+	 and this window is the last one, its trailing edge is fixed.  */
+      if (NILP (XWINDOW (window)->next) && NILP (first_parallel))
+	{
+	  Fset_window_configuration (old_config);
+	  error ("Specified window edge is fixed");
+	}
+
       /* Don't make this window too small.  */
       if (XINT (CURSIZE (window)) + delta
 	  < (horiz_flag ? window_min_width : window_min_height))
@@ -4324,7 +4334,7 @@
 	 we will fail and report an error, above.)  */
       if (NILP (first_parallel))
 	{
-	  if (!NILP (XWINDOW (window)->next))
+	  if (!NILP (p->next))
 	    {
               /* This may happen for the minibuffer.  In that case
                  the window_deletion_count check below does not work.  */