]> git.eshelyaron.com Git - emacs.git/commitdiff
(enlarge_window): When exceeding size of parent,
authorRichard M. Stallman <rms@gnu.org>
Fri, 18 Jan 2002 03:50:50 +0000 (03:50 +0000)
committerRichard M. Stallman <rms@gnu.org>
Fri, 18 Jan 2002 03:50:50 +0000 (03:50 +0000)
directly delete all the siblings instead of trying to resize it.

src/ChangeLog
src/window.c

index 813cfc9bb539b7daa53cb2f39193fdb78d11ba84..6929234548885e006f8861e54526c8f199b30f60 100644 (file)
@@ -1,3 +1,8 @@
+2002-01-17  Richard M. Stallman  <rms@gnu.org>
+
+       * window.c (enlarge_window): When exceeding size of parent,
+       directly delete all the siblings instead of trying to resize it.
+
 2002-01-17  Pavel Jan\e,Bm\e(Bk  <Pavel@Janik.cz>
 
        * term.c (set_tty_color_mode): Remove unused variable `tem'.
index e3914f8f97a01efaa091052a4ba258a606286540..be2f6330bf4ec29945ebcb66a7ce7cb15f325ea0 100644 (file)
@@ -3543,11 +3543,24 @@ enlarge_window (window, delta, widthflag, preserve_before)
       register int delta1;
       register int opht = (*sizefun) (parent);
 
-      /* If trying to grow this window to or beyond size of the parent,
-        make delta1 so big that, on shrinking back down,
-        all the siblings end up with less than one line and are deleted.  */
       if (opht <= XINT (*sizep) + delta)
-       delta1 = opht * opht * 2;
+       {
+         /* If trying to grow this window to or beyond size of the parent,
+            just delete all the sibling windows.  */
+         Lisp_Object tem, next;
+
+         tem = XWINDOW (parent)->vchild;
+         if (NILP (tem))
+           tem = XWINDOW (parent)->hchild;
+
+         while (! NILP (tem))
+           {
+             next = XWINDOW (tem)->next;
+             if (!EQ (tem, window))
+               delete_window (tem);
+             tem = next;
+           }
+       }
       else
        {
          /* Otherwise, make delta1 just right so that if we add
@@ -3590,19 +3603,20 @@ enlarge_window (window, delta, widthflag, preserve_before)
              ++n;
 
          delta1 = n * delta;
-       }
 
-      /* Add delta1 lines or columns to this window, and to the parent,
-        keeping things consistent while not affecting siblings.  */
-      XSETINT (CURSIZE (parent), opht + delta1);
-      (*setsizefun) (window, XINT (*sizep) + delta1, 0);
-
-      /* Squeeze out delta1 lines or columns from our parent,
-        shriking this window and siblings proportionately.
-        This brings parent back to correct size.
-        Delta1 was calculated so this makes this window the desired size,
-        taking it all out of the siblings.  */
-      (*setsizefun) (parent, opht, 0);
+         /* Add delta1 lines or columns to this window, and to the parent,
+            keeping things consistent while not affecting siblings.  */
+         XSETINT (CURSIZE (parent), opht + delta1);
+         (*setsizefun) (window, XINT (*sizep) + delta1, 0);
+
+         /* Squeeze out delta1 lines or columns from our parent,
+            shriking this window and siblings proportionately.
+            This brings parent back to correct size.
+            Delta1 was calculated so this makes this window the desired size,
+            taking it all out of the siblings.  */
+         (*setsizefun) (parent, opht, 0);
+
+       }
     }
 
   XSETFASTINT (p->last_modified, 0);