diff options
| -rw-r--r-- | sys/src/cmd/mothra/libpanel/textview.c | 9 | ||||
| -rw-r--r-- | sys/src/cmd/mothra/mothra.c | 1 |
2 files changed, 5 insertions, 5 deletions
diff --git a/sys/src/cmd/mothra/libpanel/textview.c b/sys/src/cmd/mothra/libpanel/textview.c index e3120862b..7b54d86b9 100644 --- a/sys/src/cmd/mothra/libpanel/textview.c +++ b/sys/src/cmd/mothra/libpanel/textview.c @@ -153,6 +153,7 @@ void pl_scrolltextview(Panel *p, int dir, int buttons, int num, int den){ Textview *tp; Rectangle r; if(dir!=VERT) return; + tp=p->data; ul=p->r.min; size=subpt(p->r.max, p->r.min); @@ -162,14 +163,14 @@ void pl_scrolltextview(Panel *p, int dir, int buttons, int num, int den){ SET(yoffs); break; case 1: /* left -- top moves to pointer */ - yoffs=tp->yoffs-num*size.y/den; + yoffs=(vlong)tp->yoffs-num*size.y/den; if(yoffs<0) yoffs=0; break; case 2: /* middle -- absolute index of file */ - yoffs=tp->thgt*num/den; + yoffs=(vlong)tp->thgt*num/den; break; case 4: /* right -- line pointed at moves to top */ - yoffs=tp->yoffs+num*size.y/den; + yoffs=tp->yoffs+(vlong)num*size.y/den; if(yoffs>tp->thgt) yoffs=tp->thgt; break; } @@ -177,7 +178,7 @@ void pl_scrolltextview(Panel *p, int dir, int buttons, int num, int den){ pl_hiliteword(p, tp->hitword, 0); r=pl_outline(p->b, p->r, p->state); pl_rtredraw(p->b, r, tp->text, yoffs, tp->yoffs); - tp->yoffs=yoffs; + p->scr.pos.y=tp->yoffs=yoffs; pl_fixtextview(p, tp, r); } } diff --git a/sys/src/cmd/mothra/mothra.c b/sys/src/cmd/mothra/mothra.c index 543fee0ec..21c35666d 100644 --- a/sys/src/cmd/mothra/mothra.c +++ b/sys/src/cmd/mothra/mothra.c @@ -171,7 +171,6 @@ void scrolltext(int dy, int whence) if(s.pos.y > s.size.y) s.pos.y = s.size.y; plsetscroll(text, s); - pldraw(root, screen); } void mkpanels(void){ |
