commit 4650064aa757c217fa72f8819a2cf67c689bcdef from: Russ Cox date: Mon Mar 30 13:56:50 2020 UTC acme: scale window bodies on resize, not including tag space This avoids reopening collapsed windows after a large vertical resize. commit - 92aa0e13ad8cec37936998a66eb728bfca88d689 commit + 4650064aa757c217fa72f8819a2cf67c689bcdef blob - 63c33ac11c52dded05cc959bb0f7644ed1610780 blob + 63247a84f081f40440480f2545a7ca6a96fa08bd --- src/cmd/acme/cols.c +++ 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);