diff options
author | Gerd Moellmann <gerd@gnu.org> | 2000-10-26 20:38:06 +0000 |
---|---|---|
committer | Gerd Moellmann <gerd@gnu.org> | 2000-10-26 20:38:06 +0000 |
commit | 8b6d9dc9748568e27f54b641db2247cf365093ef (patch) | |
tree | dc5423f503c7cf519ed1bc73845461735c741876 /src/window.c | |
parent | f59a34152df56153531e41ae3739c3fd3d2402cb (diff) | |
download | emacs-8b6d9dc9748568e27f54b641db2247cf365093ef.tar.gz |
(size_window): Compute size difference from sum of old
child window sizes instead of from parent's size.
Diffstat (limited to 'src/window.c')
-rw-r--r-- | src/window.c | 24 |
1 files changed, 14 insertions, 10 deletions
diff --git a/src/window.c b/src/window.c index 2db5ddd2215..38724e22bbc 100644 --- a/src/window.c +++ b/src/window.c @@ -2277,12 +2277,12 @@ size_window (window, size, width_p, nodelete_p) Preserve it as long as that is at all possible. */ if (width_p) { - old_size = XFASTINT (w->width); + old_size = XINT (w->width); min_size = window_min_width; } else { - old_size = XFASTINT (w->height); + old_size = XINT (w->height); min_size = window_min_height; } @@ -2341,18 +2341,22 @@ size_window (window, size, width_p, nodelete_p) { int fixed_size, each, extra, n; int resize_fixed_p, nfixed; - int last_pos, first_pos, nchildren; + int last_pos, first_pos, nchildren, total; /* Determine the fixed-size portion of the this window, and the number of child windows. */ - fixed_size = nchildren = nfixed = 0; + fixed_size = nchildren = nfixed = total = 0; for (child = *forward; !NILP (child); child = c->next, ++nchildren) { + int child_size; + c = XWINDOW (child); + child_size = width_p ? XINT (c->width) : XINT (c->height); + total += child_size; + if (window_fixed_size_p (c, width_p, 0)) { - fixed_size += (width_p - ? XFASTINT (c->width) : XFASTINT (c->height)); + fixed_size += child_size; ++nfixed; } } @@ -2365,11 +2369,11 @@ size_window (window, size, width_p, nodelete_p) /* Compute how many lines/columns to add to each child. The value of extra takes care of rounding errors. */ n = resize_fixed_p ? nchildren : nchildren - nfixed; - each = (size - old_size) / n; - extra = (size - old_size) - n * each; + each = (size - total) / n; + extra = (size - total) - n * each; /* Compute new children heights and edge positions. */ - first_pos = width_p ? XFASTINT (w->left) : XFASTINT (w->top); + first_pos = width_p ? XINT (w->left) : XINT (w->top); last_pos = first_pos; for (child = *forward; !NILP (child); child = c->next) { @@ -2412,7 +2416,7 @@ size_window (window, size, width_p, nodelete_p) { int child_size; c = XWINDOW (child); - child_size = width_p ? XFASTINT (c->width) : XFASTINT (c->height); + child_size = width_p ? XINT (c->width) : XINT (c->height); size_window (child, child_size, width_p, 0); } } |