commit f210f90702f8f402b85e6f279f2817869c4f361c
parent 94a8bd0c3c019e51ffb1aab01c1b7f06ec1e2b98
Author: Anselm R. Garbe <garbeam@wmii.de>
Date: Sun, 7 May 2006 23:29:04 +0200
implemented new client drawing code which makes it easy to recognize the focused client in an unfocused column
Diffstat:
1 file changed, 28 insertions(+), 17 deletions(-)
diff --git a/cmd/wm/client.c b/cmd/wm/client.c
@@ -252,11 +252,15 @@ draw_client(Client *c)
{
BlitzDraw d = { 0 };
Frame *f;
+ char buf[256];
+ int fidx;
+ unsigned int w;
if(!c->frame.size)
return; /* might not have been attached atm */
f = c->frame.data[c->sel];
+ fidx = idx_of_frame(f);
d.drawable = c->framewin;
d.font = blitzfont;
d.gc = c->gc;
@@ -279,25 +283,32 @@ draw_client(Client *c)
d.rect.height = height_of_bar();
d.notch = nil;
- /* max mode bar */
- if(f->area->mode == Colmax) {
- unsigned long tmp = d.color.fg;
- char buf[256];
- d.color.fg = d.color.bg;
- d.color.bg = tmp;
- snprintf(buf, sizeof(buf), "%d/%d", idx_of_frame(f) + 1, f->area->frame.size);
- d.align = CENTER;
- d.rect.width = d.rect.height + blitz_textwidth(dpy, &blitzfont, buf);
- d.data = buf;
- blitz_drawlabel(dpy, &d);
- blitz_drawborder(dpy, &d);
- d.color.bg = d.color.fg;
- d.color.fg = tmp;
- d.rect.x += d.rect.width;
- }
+ /* mode bar */
+ d.align = CENTER;
+ snprintf(buf, sizeof(buf), "%s%d/%d",
+ /* if */ !idx_of_area(f->area) ? "~" : "",
+ fidx, f->area->frame.size);
+ w = d.rect.width = d.rect.height + blitz_textwidth(dpy, &blitzfont, buf);
+ d.rect.x = f->rect.width - d.rect.width;
+ d.data = buf;
+
+ if(f->area->sel == fidx)
+ d.color = def.sel;
+ else
+ d.color = def.norm;
+ blitz_drawlabel(dpy, &d);
+ blitz_drawborder(dpy, &d);
+ d.rect.x = 0;
+
+ if(c == sel_client())
+ d.color = def.sel;
+ else
+ d.color = def.norm;
/* tag bar */
d.rect.width = d.rect.height + blitz_textwidth(dpy, &blitzfont, c->tags);
+ if(d.rect.width > f->rect.width / 3)
+ d.rect.width = f->rect.width / 3;
d.data = c->tags;
blitz_drawlabel(dpy, &d);
blitz_drawborder(dpy, &d);
@@ -305,7 +316,7 @@ draw_client(Client *c)
/* title bar */
d.align = WEST;
- d.rect.width = f->rect.width - d.rect.x;
+ d.rect.width = f->rect.width - (d.rect.x + w);
d.data = c->name;
blitz_drawlabel(dpy, &d);
blitz_drawborder(dpy, &d);