Mercurial > emacs
changeset 42816:3ba600a336b4
(enlarge_window): When exceeding size of parent,
directly delete all the siblings instead of trying to resize it.
author | Richard M. Stallman <rms@gnu.org> |
---|---|
date | Fri, 18 Jan 2002 03:50:15 +0000 |
parents | b672e0acf1a3 |
children | 83e878c5c0cb |
files | src/window.c |
diffstat | 1 files changed, 30 insertions(+), 16 deletions(-) [+] |
line wrap: on
line diff
--- a/src/window.c Thu Jan 17 22:22:38 2002 +0000 +++ b/src/window.c Fri Jan 18 03:50:15 2002 +0000 @@ -3543,11 +3543,24 @@ 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 @@ ++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);