diff options
Diffstat (limited to 'drw.c')
-rw-r--r-- | drw.c | 19 |
1 files changed, 17 insertions, 2 deletions
@@ -268,7 +268,7 @@ drw_text(Drw *drw, int x, int y, unsigned int w, unsigned int h, unsigned int lp | |||
268 | return 0; | 268 | return 0; |
269 | 269 | ||
270 | if (!render) { | 270 | if (!render) { |
271 | w = ~w; | 271 | w = invert ? invert : ~invert; |
272 | } else { | 272 | } else { |
273 | XSetForeground(drw->dpy, drw->gc, drw->scheme[invert ? ColFg : ColBg].pixel); | 273 | XSetForeground(drw->dpy, drw->gc, drw->scheme[invert ? ColFg : ColBg].pixel); |
274 | XFillRectangle(drw->dpy, drw->drawable, drw->gc, x, y, w, h); | 274 | XFillRectangle(drw->dpy, drw->drawable, drw->gc, x, y, w, h); |
@@ -300,7 +300,13 @@ drw_text(Drw *drw, int x, int y, unsigned int w, unsigned int h, unsigned int lp | |||
300 | 300 | ||
301 | if (ew + tmpw > w) { | 301 | if (ew + tmpw > w) { |
302 | overflow = 1; | 302 | overflow = 1; |
303 | utf8strlen = ellipsis_len; | 303 | /* called from drw_fontset_getwidth_clamp(): |
304 | * it wants the width AFTER the overflow | ||
305 | */ | ||
306 | if (!render) | ||
307 | x += tmpw; | ||
308 | else | ||
309 | utf8strlen = ellipsis_len; | ||
304 | } else if (curfont == usedfont) { | 310 | } else if (curfont == usedfont) { |
305 | utf8strlen += utf8charlen; | 311 | utf8strlen += utf8charlen; |
306 | text += utf8charlen; | 312 | text += utf8charlen; |
@@ -397,6 +403,15 @@ drw_fontset_getwidth(Drw *drw, const char *text) | |||
397 | return drw_text(drw, 0, 0, 0, 0, 0, text, 0); | 403 | return drw_text(drw, 0, 0, 0, 0, 0, text, 0); |
398 | } | 404 | } |
399 | 405 | ||
406 | unsigned int | ||
407 | drw_fontset_getwidth_clamp(Drw *drw, const char *text, unsigned int n) | ||
408 | { | ||
409 | unsigned int tmp = 0; | ||
410 | if (drw && drw->fonts && text && n) | ||
411 | tmp = drw_text(drw, 0, 0, 0, 0, 0, text, n); | ||
412 | return MIN(n, tmp); | ||
413 | } | ||
414 | |||
400 | void | 415 | void |
401 | drw_font_getexts(Fnt *font, const char *text, unsigned int len, unsigned int *w, unsigned int *h) | 416 | drw_font_getexts(Fnt *font, const char *text, unsigned int len, unsigned int *w, unsigned int *h) |
402 | { | 417 | { |