diff options
author | gotmor <gotmor@f2baff5b-bf2c-0410-a398-912abdc3d8b2> | 2009-04-23 11:08:34 +0000 |
---|---|---|
committer | gotmor <gotmor@f2baff5b-bf2c-0410-a398-912abdc3d8b2> | 2009-04-23 11:08:34 +0000 |
commit | 6034c9d12b66f9d055cdd208ac8e8357eb63b9c5 (patch) | |
tree | 8517bb30eee93b7f5f9b552845452d8f45f07f45 /draw.c | |
parent | 2df4dff6d6c2cee91483177d647edfbe14850f80 (diff) | |
download | dzen-6034c9d12b66f9d055cdd208ac8e8357eb63b9c5.tar.gz dzen-6034c9d12b66f9d055cdd208ac8e8357eb63b9c5.zip |
fixed reverse colour bug with XFT fonts in menu mode
git-svn-id: http://dzen.googlecode.com/svn/trunk@263 f2baff5b-bf2c-0410-a398-912abdc3d8b2
Diffstat (limited to 'draw.c')
-rw-r--r-- | draw.c | 26 |
1 files changed, 26 insertions, 0 deletions
@@ -392,6 +392,8 @@ parse_line(const char *line, int lnr, int align, int reverse, int nodraw) { XftColor xftc; char *xftcs; int xftcs_f=0; + char *xftcs_bg; + int xftcs_bgf=0; xftcs = (char *)dzen.fg; #endif @@ -436,6 +438,10 @@ parse_line(const char *line, int lnr, int align, int reverse, int nodraw) { #ifdef DZEN_XPM xpms.pixel = dzen.norm[ColBG]; #endif +#ifdef DZEN_XFT + xftcs_bg = (char *)dzen.bg; + xftcs_bgf = 0; +#endif } else { XSetForeground(dzen.dpy, dzen.tgc, dzen.norm[ColFG]); @@ -665,6 +671,17 @@ parse_line(const char *line, int lnr, int align, int reverse, int nodraw) { case bg: lastbg = tval[0] ? (unsigned)getcolor(tval) : dzen.norm[ColBG]; +#ifdef DZEN_XFT + if(xftcs_bgf) free(xftcs_bg); + if(tval[0]) { + xftcs_bg = estrdup(tval); + xftcs_bgf = 1; + } else { + xftcs_bg = (char *)dzen.bg; + xftcs_bgf = 0; + } +#endif + break; case fg: @@ -771,8 +788,13 @@ parse_line(const char *line, int lnr, int align, int reverse, int nodraw) { else XDrawString(dzen.dpy, pm, dzen.tgc, px, py+dzen.font.ascent, lbuf, strlen(lbuf)); #else + if(reverse) { + XftColorAllocName(dzen.dpy, DefaultVisual(dzen.dpy, dzen.screen), + DefaultColormap(dzen.dpy, dzen.screen), xftcs_bg, &xftc); + } else { XftColorAllocName(dzen.dpy, DefaultVisual(dzen.dpy, dzen.screen), DefaultColormap(dzen.dpy, dzen.screen), xftcs, &xftc); + } XftDrawStringUtf8(xftd, &xftc, cur_fnt->xftfont, px, py + dzen.font.xftfont->ascent, lbuf, strlen(lbuf)); @@ -781,6 +803,10 @@ parse_line(const char *line, int lnr, int align, int reverse, int nodraw) { free(xftcs); xftcs_f = 0; } + if(xftcs_bgf) { + free(xftcs_bg); + xftcs_bgf = 0; + } #endif |