shithub: winview

Download patch

ref: 0729f86ea9233ed4e2e7881fe5ac8aee735c78ee
parent: 141bdb3dee04048a493e5bfca93979ce1f1c9462
author: sirjofri <sirjofri@sirjofri.de>
date: Sat Sep 7 07:52:23 EDT 2024

properly centers text, fixes text bug

--- a/mkfile
+++ b/mkfile
@@ -1,5 +1,6 @@
 </$objtype/mkfile
 
+BIN=/$objtype/bin
 TARG=winview
 OFILES=winview.$O
 
--- a/winview.c
+++ b/winview.c
@@ -185,7 +185,8 @@
 	}
 	close(fd);
 	buf[n] = 0;
-	return buf;
+	s = strdup(buf);
+	return s;
 }
 
 int
@@ -252,15 +253,16 @@
 	char *s;
 	char *winname;
 	Memimage *m, *mn;
-	Point coords;
+	Point coords, txt, ts;
 	Rectangle textbox;
 	
 	winname = getwinname(dir->name);
 	if (!winname)
 		return 0;
-	winname = strdup(winname);
-	if (issamewin(winname))
+	if (issamewin(winname)) {
+		free(winname);
 		return 0;
+	}
 	
 	s = smprint("%s/%s/window", windir, dir->name);
 	if (!s)
@@ -295,13 +297,18 @@
 	memimagedraw(target, rectaddpt(m->r, coords),
 		m, m->r.min, nil, ZP, S);
 	
-	textbox.min = addpt(coords, halfcell);
-	textbox.max = addpt(textbox.min, stringsize(font, winname));
+	ts = stringsize(font, winname);
+	txt = addpt(coords, halfcell);
+	txt = subpt(txt, divpt(ts, 2));
+	textbox.min = txt;
+	textbox.max = addpt(textbox.min, ts);
 	textbox = insetrect(textbox, -5);
 	
 	memimagedraw(target, textbox, tback, ZP, nil, ZP, SoverD);
-	memimagestring(target, addpt(coords, halfcell),
+	memimagestring(target, txt,
 		contrast, ZP, memdefont, winname);
+	
+	free(winname);
 	
 	if (!windows[num].name) {
 		windows[num].name = strdup(dir->name);