575 XSetForeground(dpy, dc.gc, col[invert ? ColFG : ColBG]); |
575 XSetForeground(dpy, dc.gc, col[invert ? ColFG : ColBG]); |
576 XFillRectangles(dpy, dc.drawable, dc.gc, &r, 1); |
576 XFillRectangles(dpy, dc.drawable, dc.gc, &r, 1); |
577 if(!text) |
577 if(!text) |
578 return; |
578 return; |
579 olen = strlen(text); |
579 olen = strlen(text); |
580 len = MIN(olen, sizeof buf); |
|
581 memcpy(buf, text, len); |
|
582 h = dc.font.ascent + dc.font.descent; |
580 h = dc.font.ascent + dc.font.descent; |
583 y = dc.y + (dc.h / 2) - (h / 2) + dc.font.ascent; |
581 y = dc.y + (dc.h / 2) - (h / 2) + dc.font.ascent; |
584 x = dc.x + (h / 2); |
582 x = dc.x + (h / 2); |
585 /* shorten text if necessary */ |
583 /* shorten text if necessary */ |
586 for(; len && (i = textnw(buf, len)) > dc.w - h; len--); |
584 for(len = MIN(olen, sizeof buf); len && (i = textnw(buf, len)) > dc.w - h; len--); |
587 if(!len) |
585 if(!len) |
588 return; |
586 return; |
|
587 memcpy(buf, text, len); |
589 if(len < olen) |
588 if(len < olen) |
590 for(i = len; i && i > len - 3; buf[--i] = '.'); |
589 for(i = len; i && i > len - 3; buf[--i] = '.'); |
591 XSetForeground(dpy, dc.gc, col[invert ? ColBG : ColFG]); |
590 XSetForeground(dpy, dc.gc, col[invert ? ColBG : ColFG]); |
592 if(dc.font.set) |
591 if(dc.font.set) |
593 XmbDrawString(dpy, dc.drawable, dc.font.set, dc.gc, x, y, buf, len); |
592 XmbDrawString(dpy, dc.drawable, dc.font.set, dc.gc, x, y, buf, len); |