shithub: libnate

Download patch

ref: 812d84e15bf64b6bdad838401acd8c8bbf25342b
parent: 228a7b0eeda3531eb0bf0efa2211e4532af69681
author: sirjofri <sirjofri@sirjofri.de>
date: Sun Feb 9 10:52:30 EST 2025

proper nate debug output, fixes box child calcsize behavior and image rendering

--- a/n_box.c
+++ b/n_box.c
@@ -15,10 +15,13 @@
 	GUARD(b);
 	if (!b->sizetocontent) {
 		r.max = addpt(r.min, b->size);
+		/* tell child its size (important!) */
+		ncallcalcsize(lgetfirst(&b->child), screen, r);
 		b->r = r;
 		return r;
 	}
 	if (!lgetfirst(&b->child)) {
+		/* greedy */
 		b->r = r;
 		return r;
 	}
--- a/n_image.c
+++ b/n_image.c
@@ -38,7 +38,7 @@
 		draw(img, i->r, display->white, nil, ZP);
 		return;
 	}
-	draw(img, i->r, i->image, nil, i->offset);
+	draw(img, i->r, i->image, nil, i->offset); // ZP=i->offset
 }
 
 static void
--- a/nate.c
+++ b/nate.c
@@ -6,6 +6,7 @@
 
 int nateborders = 0;
 int natetracehit = 0;
+int natedebugfd = -1;
 
 static Nlist rootchain = { nil };
 static Nelem* rootelem = nil;
@@ -197,10 +198,12 @@
 	assert(nelem);
 	
 	if (nelem->funcs && nelem->funcs->draw) {
+		if (natedebugfd >= 0)
+			fprint(natedebugfd, "DRAW: %s\n", nelem->type);
 		or = dst->clipr;
-		replclipr(dst, 0, nelem->r);
+		//replclipr(dst, 0, nelem->r);
 		nelem->funcs->draw(nelem, dst);
-		replclipr(dst, 0, or);
+		//replclipr(dst, 0, or);
 	}
 }
 
--- a/nate.h
+++ b/nate.h
@@ -36,6 +36,7 @@
 
 extern int nateborders;
 extern int natetracehit;
+extern int natedebugfd;
 
 struct {
 	Image *red;
--- a/nate_construct.c
+++ b/nate_construct.c
@@ -115,6 +115,8 @@
 nctracehit(Nelem *el, int pt)
 {
 	char *name;
+	if (natedebugfd < 0)
+		return;
 	if (nctracehitlevel < 0)
 		return;
 	if (el->funcs && el->funcs->getname)
@@ -121,7 +123,7 @@
 		name = el->funcs->getname(el);
 	else
 		name = el->name;
-	fprint(2, "HIT: %*s%c%s%c %c%s%c\n",
+	fprint(natedebugfd, "HIT: %*s%c%s%c %c%s%c\n",
 		nctracehitlevel * 3, nctracehitlevel?"↘":"", /* indent */
 		pt ? '(' : ' ', el->type, pt ? ')' : ' ', /* Nelem type */
 		name?'\"':' ', name ? name : "", name?'\"':' '); /* name */
--- a/test/ntest.c
+++ b/test/ntest.c
@@ -51,11 +51,12 @@
 	if (initdraw(nil, nil, "nate test") < 0)
 		sysfatal("initdraw: %r");
 	
-	einit(Emouse);
-	nateinit();
-	
 	nateborders = 1;
 	natetracehit = 1;
+	natedebugfd = 2;
+	
+	einit(Emouse);
+	nateinit();
 	
 	Image* red = allocimage(display, Rect(0, 0, 1, 1), screen->chan, 1, DRed);
 	Image* green = allocimage(display, Rect(0, 0, 1, 1), screen->chan, 1, DGreen);
--