From 4650064aa757c217fa72f8819a2cf67c689bcdef Mon Sep 17 00:00:00 2001 From: Russ Cox Date: Mon, 30 Mar 2020 09:54:45 -0400 Subject: acme: scale window bodies on resize, not including tag space This avoids reopening collapsed windows after a large vertical resize. --- src/cmd/acme/cols.c | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) (limited to 'src') diff --git a/src/cmd/acme/cols.c b/src/cmd/acme/cols.c index 63c33ac1..63247a84 100644 --- a/src/cmd/acme/cols.c +++ b/src/cmd/acme/cols.c @@ -232,7 +232,7 @@ colmousebut(Column *c) void colresize(Column *c, Rectangle r) { - int i; + int i, old, new; Rectangle r1, r2; Window *w; @@ -245,6 +245,8 @@ colresize(Column *c, Rectangle r) r1.max.y += Border; draw(screen, r1, display->black, nil, ZP); r1.max.y = r.max.y; + new = Dy(r) - c->nw*(Border + font->height); + old = Dy(c->r) - c->nw*(Border + font->height); for(i=0; inw; i++){ w = c->w[i]; w->maxlines = 0; @@ -252,8 +254,8 @@ colresize(Column *c, Rectangle r) r1.max.y = r.max.y; else{ r1.max.y = r1.min.y; - if(Dy(c->r) != 0){ - r1.max.y += (Dy(w->r)+Border)*Dy(r)/Dy(c->r); + if(new > 0 && old > 0 && Dy(w->r) > Border+font->height){ + r1.max.y += (Dy(w->r)-Border-font->height)*new/old + Border + font->height; } } r1.max.y = max(r1.max.y, r1.min.y + Border+font->height); -- cgit v1.2.3