summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorcinap_lenrek <cinap_lenrek@centraldogma>2011-09-26 16:12:06 +0200
committercinap_lenrek <cinap_lenrek@centraldogma>2011-09-26 16:12:06 +0200
commit22f094452eb89ff916dbb11d099470c8eb818e08 (patch)
tree01929f8d67fb6a570ddcae564e3b7495b0838662
parenta04ace69ffd28e4bd6fa95389368a142088dd4de (diff)
downloadplan9front-22f094452eb89ff916dbb11d099470c8eb818e08.tar.xz
mothra: scrolling
-rw-r--r--sys/src/cmd/mothra/mothra.c26
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;