diff options
| author | cinap_lenrek <cinap_lenrek@centraldogma> | 2011-09-26 16:12:06 +0200 |
|---|---|---|
| committer | cinap_lenrek <cinap_lenrek@centraldogma> | 2011-09-26 16:12:06 +0200 |
| commit | 22f094452eb89ff916dbb11d099470c8eb818e08 (patch) | |
| tree | 01929f8d67fb6a570ddcae564e3b7495b0838662 | |
| parent | a04ace69ffd28e4bd6fa95389368a142088dd4de (diff) | |
| download | plan9front-22f094452eb89ff916dbb11d099470c8eb818e08.tar.xz | |
mothra: scrolling
| -rw-r--r-- | sys/src/cmd/mothra/mothra.c | 26 |
1 files 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; |
