diff options
author | Anselm R Garbe <anselm@garbe.ca> | 2019-02-02 04:54:15 -0800 |
---|---|---|
committer | Anselm R Garbe <anselm@garbe.ca> | 2019-02-02 04:54:15 -0800 |
commit | 65be875f5adf31e9c4762ac8a8d74b1dfdd78584 (patch) | |
tree | 8d047b2f0f6deb56efe6ec9a5c411f2e250cfccd /drw.c | |
parent | 7d19b2055d98e5c0249efe582c852b8b8b30cd41 (diff) | |
download | dmenu-65be875f5adf31e9c4762ac8a8d74b1dfdd78584.tar.gz dmenu-65be875f5adf31e9c4762ac8a8d74b1dfdd78584.tar.bz2 dmenu-65be875f5adf31e9c4762ac8a8d74b1dfdd78584.zip |
Prepared 4.9 release.
Diffstat (limited to 'drw.c')
-rw-r--r-- | drw.c | 16 |
1 files changed, 15 insertions, 1 deletions
@@ -132,6 +132,19 @@ xfont_create(Drw *drw, const char *fontname, FcPattern *fontpattern) die("no font specified."); } + /* Do not allow using color fonts. This is a workaround for a BadLength + * error from Xft with color glyphs. Modelled on the Xterm workaround. See + * https://bugzilla.redhat.com/show_bug.cgi?id=1498269 + * https://lists.suckless.org/dev/1701/30932.html + * https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=916349 + * and lots more all over the internet. + */ + FcBool iscol; + if(FcPatternGetBool(xfont->pattern, FC_COLOR, 0, &iscol) == FcResultMatch && iscol) { + XftFontClose(drw->dpy, xfont); + return NULL; + } + font = ecalloc(1, sizeof(Fnt)); font->xfont = xfont; font->pattern = pattern; @@ -200,7 +213,7 @@ drw_scm_create(Drw *drw, const char *clrnames[], size_t clrcount) Clr *ret; /* need at least two colors for a scheme */ - if (!drw || !clrnames || clrcount < 2 || !(ret = ecalloc(clrcount, sizeof(Clr)))) + if (!drw || !clrnames || clrcount < 2 || !(ret = ecalloc(clrcount, sizeof(XftColor)))) return NULL; for (i = 0; i < clrcount; i++) @@ -337,6 +350,7 @@ drw_text(Drw *drw, int x, int y, unsigned int w, unsigned int h, unsigned int lp fcpattern = FcPatternDuplicate(drw->fonts->pattern); FcPatternAddCharSet(fcpattern, FC_CHARSET, fccharset); FcPatternAddBool(fcpattern, FC_SCALABLE, FcTrue); + FcPatternAddBool(fcpattern, FC_COLOR, FcFalse); FcConfigSubstitute(NULL, fcpattern, FcMatchPattern); FcDefaultSubstitute(fcpattern); |