X-Git-Url: https://jasonwoof.com/gitweb/?a=blobdiff_plain;f=draw.c;h=6a7fea970c398fa930f22122b832f15428cb413d;hb=c0705eeb65733e8c5091e47d5bdc701a0779a949;hp=fc269a2a431dc2ca5f4a8a38ff5dd0559c999cd2;hpb=9e8b3258a06de01c53e60243ffe3419b47d016dd;p=dwm.git diff --git a/draw.c b/draw.c index fc269a2..6a7fea9 100644 --- a/draw.c +++ b/draw.c @@ -10,6 +10,71 @@ #include "dwm.h" +void +drawstatus() +{ + int i; + + dc.x = dc.y = 0; + dc.w = bw; + drawtext(NULL, False, False); + + if(arrange == floating) { + dc.w = textw("~"); + drawtext("~", False, False); + } + else + dc.w = 0; + for(i = 0; i < TLast; i++) { + dc.x += dc.w; + dc.w = textw(tags[i]); + drawtext(tags[i], i == tsel, True); + } + if(sel) { + dc.x += dc.w; + dc.w = textw(sel->name); + drawtext(sel->name, True, True); + } + dc.w = textw(stext); + dc.x = bx + bw - dc.w; + drawtext(stext, False, False); + + XCopyArea(dpy, dc.drawable, barwin, dc.gc, 0, 0, bw, bh, 0, 0); + XFlush(dpy); +} + +void +drawtitle(Client *c) +{ + int i; + if(c == sel) { + drawstatus(); + XUnmapWindow(dpy, c->title); + XSetWindowBorder(dpy, c->win, dc.fg); + return; + } + + XSetWindowBorder(dpy, c->win, dc.bg); + XMapWindow(dpy, c->title); + + dc.x = dc.y = 0; + + dc.w = 0; + for(i = 0; i < TLast; i++) { + if(c->tags[i]) { + dc.x += dc.w; + dc.w = textw(c->tags[i]); + drawtext(c->tags[i], False, True); + } + } + dc.x += dc.w; + dc.w = textw(c->name); + drawtext(c->name, False, True); + XCopyArea(dpy, dc.drawable, c->title, dc.gc, + 0, 0, c->tw, c->th, 0, 0); + XFlush(dpy); +} + static void drawborder(void) { @@ -30,7 +95,7 @@ drawborder(void) } void -draw(Bool border, const char *text) +drawtext(const char *text, Bool invert, Bool border) { int x, y, w, h; unsigned int len; @@ -38,7 +103,7 @@ draw(Bool border, const char *text) XGCValues gcv; XRectangle r = { dc.x, dc.y, dc.w, dc.h }; - XSetForeground(dpy, dc.gc, dc.bg); + XSetForeground(dpy, dc.gc, invert ? dc.fg : dc.bg); XFillRectangles(dpy, dc.drawable, dc.gc, &r, 1); w = 0; @@ -65,8 +130,8 @@ draw(Bool border, const char *text) if(w > dc.w) return; /* too long */ - gcv.foreground = dc.fg; - gcv.background = dc.bg; + 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); XmbDrawImageString(dpy, dc.drawable, dc.font.set, dc.gc, @@ -80,7 +145,7 @@ draw(Bool border, const char *text) } unsigned long -initcolor(const char *colstr) +getcolor(const char *colstr) { XColor color; Colormap cmap = DefaultColormap(dpy, screen); @@ -103,11 +168,11 @@ textnw(char *text, unsigned int len) unsigned int textw(char *text) { - return textnw(text, strlen(text)); + return textnw(text, strlen(text)) + dc.font.height; } void -initfont(const char *fontstr) +setfont(const char *fontstr) { char **missing, *def; int i, n;