JasonWoof Got questions, comments, patches, etc.? Contact Jason Woofenden
topbar: minify workspace map
authorJason Woofenden <jwoofenden@confex.com>
Fri, 9 Mar 2018 15:41:09 +0000 (10:41 -0500)
committerJason Woofenden <jwoofenden@confex.com>
Fri, 9 Mar 2018 15:41:09 +0000 (10:41 -0500)
drw.c
drw.h
dwm.c

diff --git a/drw.c b/drw.c
index b130405..ebdf8fe 100644 (file)
--- a/drw.c
+++ b/drw.c
@@ -141,6 +141,16 @@ drw_rect(Drw *drw, int x, int y, unsigned int w, unsigned int h, int filled, int
 
 void
 drw_text(Drw *drw, int x, int y, unsigned int w, unsigned int h, const char *text, int invert) {
+       _drw_text(drw, x, y, w, h, text, invert, 1);
+}
+
+void
+drw_text_nopad(Drw *drw, int x, int y, unsigned int w, unsigned int h, const char *text, int invert) {
+       _drw_text(drw, x, y, w, h, text, invert, 0);
+}
+
+void
+_drw_text(Drw *drw, int x, int y, unsigned int w, unsigned int h, const char *text, int invert, int pad) {
        char buf[256];
        int i, tx, ty, th, len, olen;
        Extnts tex;
@@ -155,9 +165,9 @@ drw_text(Drw *drw, int x, int y, unsigned int w, unsigned int h, const char *tex
        drw_font_getexts(drw->font, text, olen, &tex);
        th = drw->font->ascent + drw->font->descent;
        ty = y + (h / 2) - (th / 2) + drw->font->ascent;
-       tx = x + (h / 2);
+       tx = x + (h / 2) * pad;
        /* shorten text if necessary */
-       for(len = MIN(olen, sizeof buf); len && (tex.w > w - tex.h || w < tex.h); len--)
+       for(len = MIN(olen, sizeof buf); len && (tex.w > w - tex.h * pad || w < tex.h * pad); len--)
                drw_font_getexts(drw->font, text, len, &tex);
        if(!len)
                return;
diff --git a/drw.h b/drw.h
index a5f34e0..cc0b769 100644 (file)
--- a/drw.h
+++ b/drw.h
@@ -64,6 +64,8 @@ void drw_setscheme(Drw *drw, ClrScheme *scheme);
 /* Drawing functions */
 void drw_rect(Drw *drw, int x, int y, unsigned int w, unsigned int h, int filled, int empty, int invert);
 void drw_text(Drw *drw, int x, int y, unsigned int w, unsigned int h, const char *text, int invert);
+void drw_text_nopad(Drw *drw, int x, int y, unsigned int w, unsigned int h, const char *text, int invert);
+void _drw_text(Drw *drw, int x, int y, unsigned int w, unsigned int h, const char *text, int invert, int pad);
 
 /* Map functions */
 void drw_map(Drw *drw, Window win, int x, int y, unsigned int w, unsigned int h);
diff --git a/dwm.c b/dwm.c
index b4c3411..3c911b0 100644 (file)
--- a/dwm.c
+++ b/dwm.c
@@ -55,7 +55,8 @@
 #define WIDTH(X)                ((X)->w + 2 * (X)->bw)
 #define HEIGHT(X)               ((X)->h + 2 * (X)->bw)
 #define TAGMASK                 ((1 << LENGTH(tags)) - 1)
-#define TEXTW(X)                (drw_font_getexts_width(drw->font, X, strlen(X)) + drw->font->h)
+#define TEXTW_NOPAD(X)          drw_font_getexts_width(drw->font, X, strlen(X))
+#define TEXTW(X)                (TEXTW_NOPAD(X) + drw->font->h)
 
 /* enums */
 enum { CurNormal, CurResize, CurMove, CurLast }; /* cursor */
@@ -804,11 +805,9 @@ drawbar(Monitor *m) {
        }
        x = 0;
        for(i = 0; i < LENGTH(tags); i++) {
-               w = TEXTW(tags[i]);
+               w = TEXTW_NOPAD(tags[i]);
                drw_setscheme(drw, m->tagset[m->seltags] & 1 << i ? &scheme[SchemeSel] : &scheme[SchemeNorm]);
-               drw_text(drw, x, 0, w, bh, tags[i], urg & 1 << i);
-               drw_rect(drw, x, 0, w, bh, m == selmon && selmon->sel && selmon->sel->tags & 1 << i,
-                          occ & 1 << i, urg & 1 << i);
+               drw_text_nopad(drw, x, 0, w, bh, tags[i], urg & 1 << i);
                x += w;
        }
        xx = x;