Commit Diff


commit - 523aa08f51a88c59ad4b1f600f8ce3d122e9e289
commit + c585e8e498ec6f9c423ab8ea07cf853ee5b05fbe
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);