equal
deleted
inserted
replaced
50 #define CLEANMASK(mask) (mask & ~(numlockmask|LockMask)) |
50 #define CLEANMASK(mask) (mask & ~(numlockmask|LockMask)) |
51 #define LENGTH(x) (sizeof x / sizeof x[0]) |
51 #define LENGTH(x) (sizeof x / sizeof x[0]) |
52 #define MAXTAGLEN 16 |
52 #define MAXTAGLEN 16 |
53 #define MOUSEMASK (BUTTONMASK|PointerMotionMask) |
53 #define MOUSEMASK (BUTTONMASK|PointerMotionMask) |
54 #define TAGMASK ((int)((1LL << LENGTH(tags)) - 1)) |
54 #define TAGMASK ((int)((1LL << LENGTH(tags)) - 1)) |
|
55 #define TEXTW(x) (textnw(x, strlen(x)) + dc.font.height) |
55 #define VISIBLE(x) ((x)->tags & tagset[seltags]) |
56 #define VISIBLE(x) ((x)->tags & tagset[seltags]) |
56 |
57 |
57 /* enums */ |
58 /* enums */ |
58 enum { CurNormal, CurResize, CurMove, CurLast }; /* cursor */ |
59 enum { CurNormal, CurResize, CurMove, CurLast }; /* cursor */ |
59 enum { ColBorder, ColFG, ColBG, ColLast }; /* color */ |
60 enum { ColBorder, ColFG, ColBG, ColLast }; /* color */ |
167 void setmfact(const void *arg); |
168 void setmfact(const void *arg); |
168 void setup(void); |
169 void setup(void); |
169 void spawn(const void *arg); |
170 void spawn(const void *arg); |
170 void tag(const void *arg); |
171 void tag(const void *arg); |
171 uint textnw(const char *text, uint len); |
172 uint textnw(const char *text, uint len); |
172 uint textw(const char *text); |
|
173 void tile(void); |
173 void tile(void); |
174 void tileresize(Client *c, int x, int y, int w, int h); |
174 void tileresize(Client *c, int x, int y, int w, int h); |
175 void togglebar(const void *arg); |
175 void togglebar(const void *arg); |
176 void togglefloating(const void *arg); |
176 void togglefloating(const void *arg); |
177 void togglelayout(const void *arg); |
177 void togglelayout(const void *arg); |
303 XButtonPressedEvent *ev = &e->xbutton; |
303 XButtonPressedEvent *ev = &e->xbutton; |
304 |
304 |
305 if(ev->window == barwin) { |
305 if(ev->window == barwin) { |
306 x = 0; |
306 x = 0; |
307 for(i = 0; i < LENGTH(tags); i++) { |
307 for(i = 0; i < LENGTH(tags); i++) { |
308 x += textw(tags[i]); |
308 x += TEXTW(tags[i]); |
309 if(ev->x < x) { |
309 if(ev->x < x) { |
310 mask = 1 << i; |
310 mask = 1 << i; |
311 if(ev->button == Button1) { |
311 if(ev->button == Button1) { |
312 if(ev->state & MODKEY) |
312 if(ev->state & MODKEY) |
313 tag(&mask); |
313 tag(&mask); |
489 Client *c; |
489 Client *c; |
490 |
490 |
491 dc.x = 0; |
491 dc.x = 0; |
492 for(c = stack; c && !VISIBLE(c); c = c->snext); |
492 for(c = stack; c && !VISIBLE(c); c = c->snext); |
493 for(i = 0; i < LENGTH(tags); i++) { |
493 for(i = 0; i < LENGTH(tags); i++) { |
494 dc.w = textw(tags[i]); |
494 dc.w = TEXTW(tags[i]); |
495 if(tagset[seltags] & 1 << i) { |
495 if(tagset[seltags] & 1 << i) { |
496 drawtext(tags[i], dc.sel, isurgent(i)); |
496 drawtext(tags[i], dc.sel, isurgent(i)); |
497 drawsquare(c && c->tags & 1 << i, isoccupied(i), isurgent(i), dc.sel); |
497 drawsquare(c && c->tags & 1 << i, isoccupied(i), isurgent(i), dc.sel); |
498 } |
498 } |
499 else { |
499 else { |
507 drawtext(lt->symbol, dc.norm, domax); |
507 drawtext(lt->symbol, dc.norm, domax); |
508 x = dc.x + dc.w; |
508 x = dc.x + dc.w; |
509 } |
509 } |
510 else |
510 else |
511 x = dc.x; |
511 x = dc.x; |
512 dc.w = textw(stext); |
512 dc.w = TEXTW(stext); |
513 dc.x = bw - dc.w; |
513 dc.x = bw - dc.w; |
514 if(dc.x < x) { |
514 if(dc.x < x) { |
515 dc.x = x; |
515 dc.x = x; |
516 dc.w = bw - x; |
516 dc.w = bw - x; |
517 } |
517 } |
1363 if(!dc.font.set) |
1363 if(!dc.font.set) |
1364 XSetFont(dpy, dc.gc, dc.font.xfont->fid); |
1364 XSetFont(dpy, dc.gc, dc.font.xfont->fid); |
1365 |
1365 |
1366 /* init bar */ |
1366 /* init bar */ |
1367 for(blw = i = 0; LENGTH(layouts) > 1 && i < LENGTH(layouts); i++) { |
1367 for(blw = i = 0; LENGTH(layouts) > 1 && i < LENGTH(layouts); i++) { |
1368 w = textw(layouts[i].symbol); |
1368 w = TEXTW(layouts[i].symbol); |
1369 blw = MAX(blw, w); |
1369 blw = MAX(blw, w); |
1370 } |
1370 } |
1371 |
1371 |
1372 wa.override_redirect = 1; |
1372 wa.override_redirect = 1; |
1373 wa.background_pixmap = ParentRelative; |
1373 wa.background_pixmap = ParentRelative; |
1433 if(dc.font.set) { |
1433 if(dc.font.set) { |
1434 XmbTextExtents(dc.font.set, text, len, NULL, &r); |
1434 XmbTextExtents(dc.font.set, text, len, NULL, &r); |
1435 return r.width; |
1435 return r.width; |
1436 } |
1436 } |
1437 return XTextWidth(dc.font.xfont, text, len); |
1437 return XTextWidth(dc.font.xfont, text, len); |
1438 } |
|
1439 |
|
1440 uint |
|
1441 textw(const char *text) { |
|
1442 return textnw(text, strlen(text)) + dc.font.height; |
|
1443 } |
1438 } |
1444 |
1439 |
1445 void |
1440 void |
1446 tile(void) { |
1441 tile(void) { |
1447 int x, y, h, w; |
1442 int x, y, h, w; |