summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--sys/src/cmd/page.c18
1 files changed, 10 insertions, 8 deletions
diff --git a/sys/src/cmd/page.c b/sys/src/cmd/page.c
index 79777a7b5..ffd813957 100644
--- a/sys/src/cmd/page.c
+++ b/sys/src/cmd/page.c
@@ -721,13 +721,12 @@ popenfile(Page *p)
Page*
nextpage(Page *p)
{
- if(p){
- if(p->down)
- return p->down;
+ if(p && p->down)
+ return p->down;
+ while(p){
if(p->next)
return p->next;
- if(p->up)
- return p->up->next;
+ p = p->up;
}
return nil;
}
@@ -1336,13 +1335,16 @@ main(int argc, char *argv[])
continue;
}
if(m.buttons & 4){
+ Page *x;
+
if(root->down == nil)
goto Unlock;
+ qlock(&pagelock);
pagemenu.lasthit = pageindex(current);
- i = emenuhit(3, &m, &pagemenu);
+ x = pageat(emenuhit(3, &m, &pagemenu));
+ qunlock(&pagelock);
unlockdisplay(display);
- if(i != -1)
- showpage(pageat(i));
+ showpage(x);
continue;
}
Unlock: