shithub: riscv

Download patch

ref: b7ab1354e3fdf32d2a587de00b4b324779b34b20
parent: 473e97869fd5c0e2f7d4bb61a81c6a1cc7686622
parent: f912e018548a1977d849016dca29f9d64cae4f47
author: cinap_lenrek <cinap_lenrek@felloff.net>
date: Sat Jan 4 21:39:23 EST 2014

merge

--- a/sys/src/cmd/rio/scrl.c
+++ b/sys/src/cmd/rio/scrl.c
@@ -153,7 +153,7 @@
 			readmouse(&w->mc);
 			continue;
 		}
-		if(but == 1)
+		if(but == 1 || but == 4)
 			p0 = wbacknl(w, w->org, (my-s.min.y)/w->font->height);
 		else
 			p0 = w->org+frcharofpt(w, Pt(s.max.x, my));
@@ -163,6 +163,8 @@
 		/* debounce */
 		if(first){
 			flushimage(display, 1);
+			if(but > 3)
+				return;
 			sleep(200);
 			nbrecv(w->mc.c, &w->mc.Mouse);
 			first = FALSE;
--- a/sys/src/cmd/rio/wind.c
+++ b/sys/src/cmd/rio/wind.c
@@ -900,32 +900,22 @@
 {
 	int but;
 
-	if(w->mc.buttons == 1)
-		but = 1;
-	else if(w->mc.buttons == 2)
-		but = 2;
-	else if(w->mc.buttons == 4)
-		but = 3;
-	else{
-		if(w->mc.buttons == 8)
-			wkeyctl(w, Kscrolloneup);
-		if(w->mc.buttons == 16)
-			wkeyctl(w, Kscrollonedown);
-		return;
+	for(but=1;; but++){
+		if(but > 5)
+			return;
+		if(w->mc.buttons == 1<<(but-1))
+			break;
 	}
 
 	incref(w);		/* hold up window while we track */
-	if(w->i==nil)
-		goto Return;
-	if(ptinrect(w->mc.xy, w->scrollr)){
-		if(but)
+	if(w->i != nil){
+		if(shiftdown && but > 3)
+			wkeyctl(w, but == 4 ? Kscrolloneup : Kscrollonedown);
+		else if(ptinrect(w->mc.xy, w->scrollr) || (but > 3))
 			wscroll(w, but);
-		goto Return;
+		else if(but == 1)
+			wselect(w);
 	}
-	if(but == 1)
-		wselect(w);
-	/* else all is handled by main process */
-   Return:
 	wclose(w);
 }
 
--