|
|
@ -252,7 +252,7 @@ int |
|
|
|
drw_text(Drw *drw, int x, int y, unsigned int w, unsigned int h, unsigned int lpad, const char *text, int invert) |
|
|
|
{ |
|
|
|
int i, ty, ellipsis_x = 0; |
|
|
|
unsigned int tmpw, ew, ellipsis_w = 0, ellipsis_len, ellipsis_width; |
|
|
|
unsigned int tmpw, ew, ellipsis_w = 0, ellipsis_len; |
|
|
|
XftDraw *d = NULL; |
|
|
|
Fnt *usedfont, *curfont, *nextfont; |
|
|
|
int utf8strlen, utf8charlen, render = x || y || w || h; |
|
|
@ -266,6 +266,7 @@ drw_text(Drw *drw, int x, int y, unsigned int w, unsigned int h, unsigned int lp |
|
|
|
/* keep track of a couple codepoints for which we have no match. */ |
|
|
|
enum { nomatches_len = 64 }; |
|
|
|
static struct { long codepoint[nomatches_len]; unsigned int idx; } nomatches; |
|
|
|
static unsigned int ellipsis_width = 0; |
|
|
|
|
|
|
|
if (!drw || (render && (!drw->scheme || !w)) || !text || !drw->fonts) |
|
|
|
return 0; |
|
|
@ -283,7 +284,8 @@ drw_text(Drw *drw, int x, int y, unsigned int w, unsigned int h, unsigned int lp |
|
|
|
} |
|
|
|
|
|
|
|
usedfont = drw->fonts; |
|
|
|
drw_font_getexts(usedfont, "...", 3, &ellipsis_width, NULL); |
|
|
|
if (!ellipsis_width && render) |
|
|
|
ellipsis_width = drw_fontset_getwidth(drw, "..."); |
|
|
|
while (1) { |
|
|
|
ew = ellipsis_len = utf8strlen = 0; |
|
|
|
utf8str = text; |
|
|
|