Commit Diff


commit - b81c1e88cdf637e184c5733c87a728df8471fe4e
commit + a5f31f570774ca1d4a504d8c13c96af0217635a7
blob - 2596b56d5c015f1859df8694e56d642c78683aff
blob + 5ae611f57658cff1f37790bc8d97109846b1c012
--- dmenu.c
+++ dmenu.c
@@ -83,10 +83,10 @@ calcoffsets(void) {
 		n = mw - (promptw + inputw + dc_textw(dc, "<") + dc_textw(dc, ">"));
 
 	for(i = 0, next = curr; next; next = next->right)
-		if((i += (lines > 0) ? bh : dc_textw(dc, next->text)) > n)
+		if((i += (lines > 0) ? bh : MIN(dc_textw(dc, next->text), n)) > n)
 			break;
 	for(i = 0, prev = curr; prev && prev->left; prev = prev->left)
-		if((i += (lines > 0) ? bh : dc_textw(dc, prev->left->text)) > n)
+		if((i += (lines > 0) ? bh : MIN(dc_textw(dc, prev->left->text), n)) > n)
 			break;
 }
 
@@ -124,7 +124,7 @@ drawmenu(void) {
 			dc_drawtext(dc, "<", normcol);
 		for(item = curr; item != next; item = item->right) {
 			dc->x += dc->w;
-			dc->w = dc_textw(dc, item->text);
+			dc->w = MIN(dc_textw(dc, item->text), mw - dc->x);
 			dc_drawtext(dc, item->text, (item == sel) ? selcol : normcol);
 		}
 		dc->w = dc_textw(dc, ">");