aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorGerd Moellmann <[email protected]>2000-10-26 20:38:06 +0000
committerGerd Moellmann <[email protected]>2000-10-26 20:38:06 +0000
commit8b6d9dc9748568e27f54b641db2247cf365093ef (patch)
treedc5423f503c7cf519ed1bc73845461735c741876 /src
parentf59a34152df56153531e41ae3739c3fd3d2402cb (diff)
(size_window): Compute size difference from sum of old
child window sizes instead of from parent's size.
Diffstat (limited to 'src')
-rw-r--r--src/ChangeLog3
-rw-r--r--src/window.c24
2 files changed, 17 insertions, 10 deletions
diff --git a/src/ChangeLog b/src/ChangeLog
index 5f5c7c569c..f6ba041731 100644
--- a/src/ChangeLog
+++ b/src/ChangeLog
@@ -1,5 +1,8 @@
2000-10-26 Gerd Moellmann <[email protected]>
+ * window.c (size_window): Compute size difference from sum of old
+ child window sizes instead of from parent's size.
+
* xdisp.c (pos_visible_p): Change current buffer if necessary.
Handle obscured lines at the top of the window.
diff --git a/src/window.c b/src/window.c
index 2db5ddd221..38724e22bb 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);
}
}