bar_wintitle.c (2341B)
1 int 2 width_wintitle(Bar *bar, BarArg *a) 3 { 4 return a->w; 5 } 6 7 int 8 draw_wintitle(Bar *bar, BarArg *a) 9 { 10 #if BAR_TITLE_LEFT_PAD_PATCH && BAR_TITLE_RIGHT_PAD_PATCH 11 int x = a->x + lrpad / 2, w = a->w - lrpad; 12 #elif BAR_TITLE_LEFT_PAD_PATCH 13 int x = a->x + lrpad / 2, w = a->w - lrpad / 2; 14 #elif BAR_TITLE_RIGHT_PAD_PATCH 15 int x = a->x, w = a->w - lrpad / 2; 16 #else 17 int x = a->x, w = a->w; 18 #endif // BAR_TITLE_LEFT_PAD_PATCH | BAR_TITLE_RIGHT_PAD_PATCH 19 Monitor *m = bar->mon; 20 Client *c = m->sel; 21 22 if (!c) { 23 drw_setscheme(drw, scheme[SchemeTitleNorm]); 24 drw_rect(drw, x, a->y, w, a->h, 1, 1); 25 return 0; 26 } 27 28 int tpad = lrpad / 2; 29 #if BAR_WINICON_PATCH 30 int ipad = c->icon ? c->icw + ICONSPACING : 0; 31 #endif // BAR_WINICON_PATCH 32 #if BAR_CENTEREDWINDOWNAME_PATCH 33 int cpad = 0; 34 #endif // BAR_CENTEREDWINDOWNAME_PATCH 35 int tx = x; 36 int tw = w; 37 38 drw_setscheme(drw, scheme[m == selmon ? SchemeTitleSel : SchemeTitleNorm]); 39 #if BAR_IGNORE_XFT_ERRORS_WHEN_DRAWING_TEXT_PATCH 40 XSetErrorHandler(xerrordummy); 41 #endif // BAR_IGNORE_XFT_ERRORS_WHEN_DRAWING_TEXT_PATCH 42 43 if (w <= TEXTW("A") - lrpad + tpad) // reduce text padding if wintitle is too small 44 tpad = (w - TEXTW("A") + lrpad < 0 ? 0 : (w - TEXTW("A") + lrpad) / 2); 45 #if BAR_WINICON_PATCH && BAR_CENTEREDWINDOWNAME_PATCH 46 else if (TEXTW(c->name) + ipad < w) 47 cpad = (w - TEXTW(c->name) - ipad) / 2; 48 #elif BAR_CENTEREDWINDOWNAME_PATCH 49 else if (TEXTW(c->name) < w) 50 cpad = (w - TEXTW(c->name)) / 2; 51 #endif // BAR_CENTEREDWINDOWNAME_PATCH 52 53 XSetForeground(drw->dpy, drw->gc, drw->scheme[ColBg].pixel); 54 XFillRectangle(drw->dpy, drw->drawable, drw->gc, x, a->y, w, a->h); 55 56 #if BAR_CENTEREDWINDOWNAME_PATCH 57 /* Apply center padding, if any */ 58 tx += cpad; 59 tw -= cpad; 60 #endif // BAR_CENTEREDWINDOWNAME_PATCH 61 62 tx += tpad; 63 tw -= lrpad; 64 65 #if BAR_WINICON_PATCH 66 if (ipad) { 67 drw_pic(drw, tx, a->y + (a->h - c->ich) / 2, c->icw, c->ich, c->icon); 68 tx += ipad; 69 tw -= ipad; 70 } 71 #endif // BAR_WINICON_PATCH 72 73 drw_text(drw, tx, a->y, tw, a->h, 0, c->name, 0, False); 74 75 #if BAR_IGNORE_XFT_ERRORS_WHEN_DRAWING_TEXT_PATCH 76 XSync(dpy, False); 77 XSetErrorHandler(xerror); 78 #endif // BAR_IGNORE_XFT_ERRORS_WHEN_DRAWING_TEXT_PATCH 79 drawstateindicator(m, c, 1, x, a->y, w, a->h, 0, 0, c->isfixed); 80 return 1; 81 } 82 83 int 84 click_wintitle(Bar *bar, Arg *arg, BarArg *a) 85 { 86 return ClkWinTitle; 87 } 88