shithub: misc

Download patch

ref: 064c250f0c7e5224db9222f6be46da8a29ebb589
parent: 922df766d609ac2cdc6fc5a8acc5c9f7dfcb255c
author: Philip Silva <philip.silva@protonmail.com>
date: Mon Oct 18 15:12:51 EDT 2021

add hidpi patch for rio

--- a/hidpi-3.patch
+++ b/hidpi-3.patch
@@ -56,6 +56,120 @@
  
  #define	QID(w,q)	((w<<8)|(q))
  #define	WIN(q)	((((ulong)(q).path)>>8) & 0xFFFFFF)
+--- a/sys/src/cmd/rio/wind.c
++++ b/sys/src/cmd/rio/wind.c
+@@ -12,6 +12,14 @@
+ #include "dat.h"
+ #include "fns.h"
+ 
++static int
++wscale(Window *w, int n)
++{
++        if(w == nil || w->i == nil)
++                return n;
++        return scalesize(w->i->display, n);
++}
++
+ Window*
+ wlookid(int id)
+ {
+@@ -308,7 +316,7 @@
+ 		else
+ 			col = lighttitlecol;
+ 	}
+-	border(w->i, w->i->r, Selborder, col, ZP);
++	border(w->i, w->i->r, wscale(w, Selborder), col, ZP);
+ }
+ 
+ static void
+@@ -353,17 +361,17 @@
+ 
+ 	w->i = i;
+ 	w->mc.image = i;
+-	r = insetrect(i->r, Selborder+1);
++	r = insetrect(i->r, wscale(w, Selborder)+wscale(w, 1));
+ 	w->scrollr = r;
+-	w->scrollr.max.x = r.min.x+Scrollwid;
++	w->scrollr.max.x = r.min.x+wscale(w, Scrollwid);
+ 	w->lastsr = ZR;
+-	r.min.x += Scrollwid+Scrollgap;
++	r.min.x += wscale(w, Scrollwid)+wscale(w, Scrollgap);
+ 	frclear(w, FALSE);
+ 	frinit(w, r, w->font, w->i, cols);
+ 	wsetcols(w, w == input);
+ 	w->maxtab = maxtab*stringwidth(w->font, "0");
+ 	if(!w->mouseopen || !w->winnameread){
+-		r = insetrect(w->i->r, Selborder);
++		r = insetrect(w->i->r, wscale(w, Selborder));
+ 		draw(w->i, r, cols[BACK], nil, w->entire.min);
+ 		wfill(w);
+ 		wsetselect(w, w->q0, w->q1);
+@@ -370,7 +378,7 @@
+ 		wscrdraw(w);
+ 	}
+ 	if(w == input)
+-		wborder(w, Selborder);
++		wborder(w, wscale(w, Selborder));
+ 	else
+ 		wborder(w, Unselborder);
+ 	flushimage(display, 1);
+@@ -390,9 +398,9 @@
+ 	if(!w->mouseopen || !w->winnameread)
+ 		frredraw(w);
+ 	if(w == input)
+-		wborder(w, Selborder);
++		wborder(w, wscale(w, Selborder));
+ 	else
+-		wborder(w, Unselborder);
++		wborder(w, wscale(w, Unselborder));
+ }
+ 
+ static void
+@@ -401,9 +409,9 @@
+ 	Rectangle r;
+ 
+ 	if(w == input)
+-		wborder(w, Selborder);
++		wborder(w, wscale(w, Selborder));
+ 	else
+-		wborder(w, Unselborder);
++		wborder(w, wscale(w, Unselborder));
+ 	r = insetrect(w->i->r, Selborder);
+ 	draw(w->i, r, w->cols[BACK], nil, w->entire.min);
+ 	wfill(w);
+@@ -1249,7 +1257,7 @@
+ 
+ 	w = emalloc(sizeof(Window));
+ 	w->screenr = i->r;
+-	r = insetrect(i->r, Selborder+1);
++	r = insetrect(i->r, wscale(w, Selborder)+wscale(w, 1));
+ 	w->i = i;
+ 	w->mc = *mc;
+ 	w->ck = ck;
+@@ -1263,9 +1271,9 @@
+ 	w->complete = chancreate(sizeof(Completion*), 0);
+ 	w->gone = chancreate(sizeof(char*), 0);
+ 	w->scrollr = r;
+-	w->scrollr.max.x = r.min.x+Scrollwid;
++	w->scrollr.max.x = r.min.x+wscale(w, Scrollwid);
+ 	w->lastsr = ZR;
+-	r.min.x += Scrollwid+Scrollgap;
++	r.min.x += wscale(w, Scrollwid)+wscale(w, Scrollgap);
+ 	frinit(w, r, font, i, cols);
+ 	w->maxtab = maxtab*stringwidth(font, "0");
+ 	w->topped = ++topped;
+@@ -1274,9 +1282,9 @@
+ 	w->scrolling = scrolling;
+ 	w->dir = estrdup(startdir);
+ 	w->label = estrdup("<unnamed>");
+-	r = insetrect(w->i->r, Selborder);
++	r = insetrect(w->i->r, wscale(w, Selborder));
+ 	draw(w->i, r, cols[BACK], nil, w->entire.min);
+-	wborder(w, Selborder);
++	wborder(w, wscale(w, Selborder));
+ 	wscrdraw(w);
+ 	incref(w);	/* ref will be removed after mounting; avoids delete before ready to be deleted */
+ 	return w;
 --- a/sys/src/libdraw/init.c
 +++ b/sys/src/libdraw/init.c
 @@ -452,5 +465,13 @@