From 22f094452eb89ff916dbb11d099470c8eb818e08 Mon Sep 17 00:00:00 2001 From: cinap_lenrek Date: Mon, 26 Sep 2011 16:12:06 +0200 Subject: mothra: scrolling --- sys/src/cmd/mothra/mothra.c | 26 ++++++++++++++++++-------- 1 file changed, 18 insertions(+), 8 deletions(-) diff --git a/sys/src/cmd/mothra/mothra.c b/sys/src/cmd/mothra/mothra.c index bc42656ec..a2e0f8064 100644 --- a/sys/src/cmd/mothra/mothra.c +++ b/sys/src/cmd/mothra/mothra.c @@ -136,12 +136,22 @@ void adjkb(void){ plgrabkb(cmd); } -void scrolltext(int dy) +void scrolltext(int dy, int whence) { Scroll s; s = plgetscroll(text); - s.pos.y += dy; + switch(whence){ + case 0: + s.pos.y = dy; + break; + case 1: + s.pos.y += dy; + break; + case 2: + s.pos.y = s.size.y+dy; + break; + } if(s.pos.y < 0) s.pos.y = 0; if(s.pos.y > s.size.y) @@ -323,22 +333,22 @@ void main(int argc, char *argv[]){ plkeyboard(e.kbdc); break; case Khome: - scrolltext(-text->size.y*1000); + scrolltext(0, 0); break; case Kup: - scrolltext(-text->size.y/4); + scrolltext(-text->size.y/4, 1); break; case Kpgup: - scrolltext(-text->size.y/2); + scrolltext(-text->size.y/2, 1); break; case Kdown: - scrolltext(text->size.y/4); + scrolltext(text->size.y/4, 1); break; case Kpgdown: - scrolltext(text->size.y/2); + scrolltext(text->size.y/2, 1); break; case Kend: - scrolltext(text->size.y*1000); + scrolltext(-text->size.y, 2); break; } break; -- cgit v1.2.3