drw_text: account for fallback fonts in ellipsis_width - dmenu - dynamic menu | |
git clone git://git.suckless.org/dmenu | |
Log | |
Files | |
Refs | |
README | |
LICENSE | |
--- | |
commit 33685b06e9332638769e677e77b257e24e069fd1 | |
parent e4827b0c4048718ab06670cf60ef68d028fe7fc4 | |
Author: NRK <[email protected]> | |
Date: Mon, 28 Mar 2022 21:38:49 +0600 | |
drw_text: account for fallback fonts in ellipsis_width | |
additionally, ellipsis_width (which shouldn't change) is made static to | |
avoid re-calculating it on each drw_text() call. | |
Diffstat: | |
M drw.c | 6 ++++-- | |
1 file changed, 4 insertions(+), 2 deletions(-) | |
--- | |
diff --git a/drw.c b/drw.c | |
@@ -252,7 +252,7 @@ int | |
drw_text(Drw *drw, int x, int y, unsigned int w, unsigned int h, unsigned int … | |
{ | |
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 i… | |
/* 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; } nom… | |
+ 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 i… | |
} | |
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; |