diff options
Diffstat (limited to 'draw.c')
-rw-r--r-- | draw.c | 20 |
1 files changed, 7 insertions, 13 deletions
@@ -22,16 +22,15 @@ textnw(const char *text, unsigned int len) } static void -drawtext(const char *text, Bool invert, Bool highlight) +drawtext(const char *text, unsigned int colidx, Bool highlight) { int x, y, w, h; static char buf[256]; unsigned int len, olen; - XGCValues gcv; XPoint points[5]; XRectangle r = { dc.x, dc.y, dc.w, dc.h }; - XSetForeground(dpy, dc.gc, invert ? dc.fg : dc.bg); + XSetForeground(dpy, dc.gc, dc.bg[colidx]); XFillRectangles(dpy, dc.drawable, dc.gc, &r, 1); points[0].x = dc.x; points[0].y = dc.y; @@ -43,7 +42,7 @@ drawtext(const char *text, Bool invert, Bool highlight) points[3].y = 0; points[4].x = 0; points[4].y = -(dc.h - 1); - XSetForeground(dpy, dc.gc, dc.border); + XSetForeground(dpy, dc.gc, dc.fg[colidx]); XDrawLines(dpy, dc.drawable, dc.gc, points, 5, CoordModePrevious); if(!text) @@ -74,15 +73,10 @@ drawtext(const char *text, Bool invert, Bool highlight) if(w > dc.w) return; /* too long */ - gcv.foreground = invert ? dc.bg : dc.fg; - gcv.background = invert ? dc.fg : dc.bg; - if(dc.font.set) { - XChangeGC(dpy, dc.gc, GCForeground | GCBackground, &gcv); + if(dc.font.set) XmbDrawString(dpy, dc.drawable, dc.font.set, dc.gc, x, y, buf, len); - } else { - gcv.font = dc.font.xfont->fid; - XChangeGC(dpy, dc.gc, GCForeground | GCBackground | GCFont, &gcv); + XSetFont(dpy, dc.gc, dc.font.xfont->fid); XDrawString(dpy, dc.drawable, dc.gc, x, y, buf, len); } if(highlight) { @@ -157,11 +151,11 @@ drawtitle(Client *c) if(c == sel && issel) { drawstatus(); XUnmapWindow(dpy, c->twin); - XSetWindowBorder(dpy, c->win, dc.fg); + XSetWindowBorder(dpy, c->win, dc.fg[1]); return; } - XSetWindowBorder(dpy, c->win, dc.bg); + XSetWindowBorder(dpy, c->win, dc.bg[0]); XMapWindow(dpy, c->twin); dc.x = dc.y = 0; dc.w = c->tw; |