aboutsummaryrefslogtreecommitdiff
path: root/src/cmd/acme/text.c
diff options
context:
space:
mode:
authorrsc <devnull@localhost>2005-10-31 18:39:19 +0000
committerrsc <devnull@localhost>2005-10-31 18:39:19 +0000
commit33dc4226a8c21e640bc1b4d7c56f41e2f0bdcc3f (patch)
tree0aaddf63eab7398ec2d0cdf3a57296770f1c3c09 /src/cmd/acme/text.c
parenta47fbb16412bbec1507d00be3cade04cce2536fe (diff)
downloadplan9port-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.c23
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);