changing tag indicator through underline
2e834e94
2 file(s) · +17 −26
| 22 | 22 | } |
|
| 23 | 23 | ||
| 24 | 24 | static void |
|
| 25 | - | drawborder() |
|
| 25 | + | drawtext(const char *text, Bool invert, Bool underline) |
|
| 26 | 26 | { |
|
| 27 | + | int x, y, w, h; |
|
| 28 | + | static char buf[256]; |
|
| 29 | + | unsigned int len, olen; |
|
| 30 | + | XGCValues gcv; |
|
| 27 | 31 | XPoint points[5]; |
|
| 32 | + | XRectangle r = { dc.x, dc.y, dc.w, dc.h }; |
|
| 33 | + | ||
| 34 | + | XSetForeground(dpy, dc.gc, invert ? dc.fg : dc.bg); |
|
| 35 | + | XFillRectangles(dpy, dc.drawable, dc.gc, &r, 1); |
|
| 28 | 36 | points[0].x = dc.x; |
|
| 29 | 37 | points[0].y = dc.y; |
|
| 30 | 38 | points[1].x = dc.w - 1; |
|
| 35 | 43 | points[3].y = 0; |
|
| 36 | 44 | points[4].x = 0; |
|
| 37 | 45 | points[4].y = -(dc.h - 1); |
|
| 38 | - | XDrawLines(dpy, dc.drawable, dc.gc, points, 5, CoordModePrevious); |
|
| 39 | - | } |
|
| 40 | - | ||
| 41 | - | static void |
|
| 42 | - | drawtext(const char *text, Bool invert, Bool highlight) |
|
| 43 | - | { |
|
| 44 | - | int x, y, w, h; |
|
| 45 | - | static char buf[256]; |
|
| 46 | - | unsigned int len, olen; |
|
| 47 | - | DC tmp; |
|
| 48 | - | XGCValues gcv; |
|
| 49 | - | XRectangle r = { dc.x, dc.y, dc.w, dc.h }; |
|
| 50 | - | ||
| 51 | - | XSetForeground(dpy, dc.gc, invert ? dc.fg : dc.bg); |
|
| 52 | - | XFillRectangles(dpy, dc.drawable, dc.gc, &r, 1); |
|
| 53 | - | XSetLineAttributes(dpy, dc.gc, 1, LineSolid, CapButt, JoinMiter); |
|
| 54 | 46 | XSetForeground(dpy, dc.gc, dc.border); |
|
| 55 | - | drawborder(); |
|
| 47 | + | XDrawLines(dpy, dc.drawable, dc.gc, points, 5, CoordModePrevious); |
|
| 56 | 48 | ||
| 57 | 49 | if(!text) |
|
| 58 | 50 | return; |
|
| 93 | 85 | XChangeGC(dpy, dc.gc, GCForeground | GCBackground | GCFont, &gcv); |
|
| 94 | 86 | XDrawString(dpy, dc.drawable, dc.gc, x, y, buf, len); |
|
| 95 | 87 | } |
|
| 96 | - | if(highlight) { |
|
| 97 | - | tmp = dc; |
|
| 98 | - | dc.x += 2; |
|
| 99 | - | dc.y += 2; |
|
| 100 | - | dc.w -= 4; |
|
| 101 | - | dc.h -= 4; |
|
| 102 | - | drawborder(); |
|
| 103 | - | dc = tmp; |
|
| 88 | + | if(underline) { |
|
| 89 | + | points[0].x = dc.x + (h / 2) - 1; |
|
| 90 | + | points[0].y = dc.y + dc.h - 3; |
|
| 91 | + | points[1].x = dc.w - h + 2; |
|
| 92 | + | points[1].y = 0; |
|
| 93 | + | XDrawLines(dpy, dc.drawable, dc.gc, points, 2, CoordModePrevious); |
|
| 104 | 94 | } |
|
| 105 | 95 | } |
|
| 106 | 96 | ||
| 145 | 145 | ||
| 146 | 146 | dc.drawable = XCreatePixmap(dpy, root, sw, bh, DefaultDepth(dpy, screen)); |
|
| 147 | 147 | dc.gc = XCreateGC(dpy, root, 0, 0); |
|
| 148 | + | XSetLineAttributes(dpy, dc.gc, 1, LineSolid, CapButt, JoinMiter); |
|
| 148 | 149 | ||
| 149 | 150 | issel = XQueryPointer(dpy, root, &w, &w, &i, &i, &i, &i, &mask); |
|
| 150 | 151 | strcpy(stext, "dwm-"VERSION); |