git: 9front

Download patch

ref: a181ee128269e39cf6f4b753799ae013d084cffd
parent: b150f17c3d1dd88e6c0634e2957f3c6c99ac274f
author: cinap_lenrek <cinap_lenrek@centraldogma>
date: Tue Oct 18 06:02:06 EDT 2011

page: nested browsing

--- a/sys/src/cmd/page.c
+++ b/sys/src/cmd/page.c
@@ -721,13 +721,12 @@
 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 @@
 				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:
--