tapplied dfenze drawtext simplifications - dwm - [fork] customized build of dwm, the dynamic window manager
(HTM) git clone git://src.adamsgaard.dk/dwm
(DIR) Log
(DIR) Files
(DIR) Refs
(DIR) README
(DIR) LICENSE
---
(DIR) commit 858251de46c50498b261b312f2df03531dd9923c
(DIR) parent d26c28c1e7b01024b0559b4bc7b40c85d96dc701
(HTM) Author: Anselm R Garbe <garbeam@gmail.com>
Date: Sun, 27 Apr 2008 18:00:45 +0100
applied dfenze drawtext simplifications
Diffstat:
M dwm.c | 15 +++++++--------
1 file changed, 7 insertions(+), 8 deletions(-)
---
(DIR) diff --git a/dwm.c b/dwm.c
t@@ -210,7 +210,7 @@ int xerrorstart(Display *dpy, XErrorEvent *ee);
void zoom(const char *arg);
/* variables */
-char stext[256], buf[256];
+char stext[256];
int screen, sx, sy, sw, sh;
int (*xerrorxlib)(Display *, XErrorEvent *);
int bx, by, bw, bh, blw, bgw, mx, my, mw, mh, mox, moy, mow, moh, tx, ty, tw, th, wx, wy, ww, wh;
t@@ -597,22 +597,23 @@ drawtext(const char *text, unsigned long col[ColLast], Bool invert) {
int x, y, w, h;
unsigned int len, olen;
XRectangle r = { dc.x, dc.y, dc.w, dc.h };
+ char buf[256];
XSetForeground(dpy, dc.gc, col[invert ? ColFG : ColBG]);
XFillRectangles(dpy, dc.drawable, dc.gc, &r, 1);
if(!text)
return;
- w = 0;
olen = strlen(text);
- len = MIN(olen, sizeof buf - 1);
+ len = MIN(olen, sizeof buf);
memcpy(buf, text, len);
- buf[len] = 0;
+ w = 0;
h = dc.font.ascent + dc.font.descent;
y = dc.y + (dc.h / 2) - (h / 2) + dc.font.ascent;
x = dc.x + (h / 2);
/* shorten text if necessary */
- while(len && (w = textnw(buf, len)) > dc.w - h)
- buf[--len] = 0;
+ for(; len && (w = textnw(buf, len)) > dc.w - h; len--);
+ if (!len)
+ return;
if(len < olen) {
if(len > 1)
buf[len - 1] = '.';
t@@ -621,8 +622,6 @@ drawtext(const char *text, unsigned long col[ColLast], Bool invert) {
if(len > 3)
buf[len - 3] = '.';
}
- if(w > dc.w)
- return; /* too long */
XSetForeground(dpy, dc.gc, col[invert ? ColBG : ColFG]);
if(dc.font.set)
XmbDrawString(dpy, dc.drawable, dc.font.set, dc.gc, x, y, buf, len);