Commit Diff


commit - 138b405f0c8aa24d8a040cc1a1cf6e3eb5a0ebc7
commit + 716233534b35f74dba5a46ade8f1a6f8cc72fea4
blob - 4cdbcbe51c2945f1f9be817e910f0331e1f1ea64
blob + 9c3908646eb39e36ac5f03defe0b03653446d85a
--- drw.c
+++ drw.c
@@ -310,8 +310,11 @@ drw_text(Drw *drw, int x, int y, unsigned int w, unsig
 		if (utf8strlen) {
 			drw_font_getexts(usedfont, utf8str, utf8strlen, &ew, NULL);
 			/* shorten text if necessary */
-			for (len = MIN(utf8strlen, sizeof(buf) - 1); len && ew > w; len--)
-				drw_font_getexts(usedfont, utf8str, len, &ew, NULL);
+			if (ew > w)
+				for (ew = 0, len = 0; ew < w - lpad * 2 && len < MIN(utf8strlen, sizeof(buf) - 1); len++)
+					drw_font_getexts(usedfont, utf8str, len, &ew, NULL);
+			else
+				len = MIN(utf8strlen, sizeof(buf) - 1);
 
 			if (len) {
 				memcpy(buf, utf8str, len);