diff options
author | rsc <devnull@localhost> | 2005-10-31 18:39:19 +0000 |
---|---|---|
committer | rsc <devnull@localhost> | 2005-10-31 18:39:19 +0000 |
commit | 33dc4226a8c21e640bc1b4d7c56f41e2f0bdcc3f (patch) | |
tree | 0aaddf63eab7398ec2d0cdf3a57296770f1c3c09 /src/cmd/acme/text.c | |
parent | a47fbb16412bbec1507d00be3cade04cce2536fe (diff) | |
download | plan9port-33dc4226a8c21e640bc1b4d7c56f41e2f0bdcc3f.tar.gz plan9port-33dc4226a8c21e640bc1b4d7c56f41e2f0bdcc3f.tar.bz2 plan9port-33dc4226a8c21e640bc1b4d7c56f41e2f0bdcc3f.zip |
Cleanup in preparation for multiline tags.
Diffstat (limited to 'src/cmd/acme/text.c')
-rw-r--r-- | src/cmd/acme/text.c | 23 |
1 files changed, 13 insertions, 10 deletions
diff --git a/src/cmd/acme/text.c b/src/cmd/acme/text.c index ea4d3b6d..a2ba0265 100644 --- a/src/cmd/acme/text.c +++ b/src/cmd/acme/text.c @@ -69,23 +69,26 @@ textredraw(Text *t, Rectangle r, Font *f, Image *b, int odx) } int -textresize(Text *t, Rectangle r) +textresize(Text *t, Rectangle r, int keepextra) { - int odx; - - if(Dy(r) > 0) - r.max.y -= Dy(r)%t->fr.font->height; - else + if(Dy(r) <= 0) r.max.y = r.min.y; - odx = Dx(t->all); + if(!keepextra) + r.max.y -= Dy(r)%t->fr.font->height; t->all = r; t->scrollr = r; t->scrollr.max.x = r.min.x+Scrollwid; t->lastsr = nullrect; r.min.x += Scrollwid+Scrollgap; frclear(&t->fr, 0); - textredraw(t, r, t->fr.font, screen, odx); - return r.max.y; + textredraw(t, r, t->fr.font, screen, Dx(t->all)); + if(keepextra && t->fr.r.max.y < t->all.max.y){ + r.min.x -= Scrollgap; + r.min.y = t->fr.r.max.y; + r.max.y = t->all.max.y; + draw(screen, r, t->fr.cols[BACK], nil, ZP); + } + return t->all.max.y; } void @@ -279,7 +282,7 @@ textload(Text *t, uint q0, char *file, int setqid) if(u != t){ if(u->org > u->file->b.nc) /* will be 0 because of reset(), but safety first */ u->org = 0; - textresize(u, u->all); + textresize(u, u->all, TRUE); textbacknl(u, u->org, 0); /* go to beginning of line */ } textsetselect(u, q0, q0); |