JasonWoof Got questions, comments, patches, etc.? Contact Jason Woofenden
another command gets workspace env
[dwm.git] / drw.c
diff --git a/drw.c b/drw.c
index bc4ac41..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; 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;