From 6034c9d12b66f9d055cdd208ac8e8357eb63b9c5 Mon Sep 17 00:00:00 2001 From: gotmor Date: Thu, 23 Apr 2009 11:08:34 +0000 Subject: 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 --- draw.c | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) (limited to 'draw.c') diff --git a/draw.c b/draw.c index 2ec7ce3..d8525b4 100644 --- a/draw.c +++ b/draw.c @@ -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 @@ -435,6 +437,10 @@ parse_line(const char *line, int lnr, int align, int reverse, int nodraw) { XSetForeground(dzen.dpy, dzen.tgc, dzen.norm[ColBG]); #ifdef DZEN_XPM xpms.pixel = dzen.norm[ColBG]; +#endif +#ifdef DZEN_XFT + xftcs_bg = (char *)dzen.bg; + xftcs_bgf = 0; #endif } else { @@ -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 -- cgit v1.2.3-54-g00ecf