diff options
Diffstat (limited to 'patches/compact.patch')
-rw-r--r-- | patches/compact.patch | 153 |
1 files changed, 153 insertions, 0 deletions
diff --git a/patches/compact.patch b/patches/compact.patch new file mode 100644 index 0000000..f7013b7 --- /dev/null +++ b/patches/compact.patch @@ -0,0 +1,153 @@ +diff --git a/dmenu.c b/dmenu.c +index 77f424d..4c841d8 100644 +--- a/dmenu.c ++++ b/dmenu.c +@@ -81,19 +81,6 @@ appenditem(struct item *item, struct item **list, struct item **last) + static void + calcoffsets(void) + { +- int i, n; +- +- if (lines > 0) +- n = lines * bh; +- else +- n = mw - (promptw + inputw + TEXTW("<") + TEXTW(">")); +- /* calculate which items will begin the next page and previous page */ +- for (i = 0, next = curr; next; next = next->right) +- if ((i += (lines > 0) ? bh : MIN(TEXTW(next->text), n)) > n) +- break; +- for (i = 0, prev = curr; prev && prev->left; prev = prev->left) +- if ((i += (lines > 0) ? bh : MIN(TEXTW(prev->left->text), n)) > n) +- break; + } + + static void +@@ -148,10 +135,10 @@ drawhighlights(struct item *item, int x, int y, int maxw) + // Move highlight str end, draw highlight, & restore + restorechar = highlight[strlen(token)]; + highlight[strlen(token)] = '\0'; +- if (indentx - (lrpad / 2) - 1 < maxw) ++ if (indentx - lrpad - 1 < maxw) + drw_text( + drw, +- x + indentx - (lrpad / 2) - 1, ++ x + indentx - lrpad - 1, + y, + MIN(maxw - indentx, TEXTW(highlight) - lrpad), + bh, 0, highlight, 0 +@@ -174,7 +161,7 @@ drawitem(struct item *item, int x, int y, int w) + else + drw_setscheme(drw, scheme[SchemeNorm]); + +- int r = drw_text(drw, x, y, w, bh, lrpad / 2, item->text, 0); ++ int r = drw_text(drw, x, y, w, bh, lrpad, item->text, 0); + drawhighlights(item, x, y, w); + return r; + } +@@ -182,7 +169,6 @@ drawitem(struct item *item, int x, int y, int w) + static void + drawmenu(void) + { +- unsigned int curpos; + struct item *item; + int x = 0, y = 0, w; + +@@ -191,17 +177,7 @@ drawmenu(void) + + if (prompt && *prompt) { + drw_setscheme(drw, scheme[SchemeSel]); +- x = drw_text(drw, x, 0, promptw, bh, lrpad / 2, prompt, 0); +- } +- /* draw input field */ +- w = (lines > 0 || !matches) ? mw - x : inputw; +- drw_setscheme(drw, scheme[SchemeNorm]); +- drw_text(drw, x, 0, w, bh, lrpad / 2, text, 0); +- +- curpos = TEXTW(text) - TEXTW(&text[cursor]); +- if ((curpos += lrpad / 2 - 1) < w) { +- drw_setscheme(drw, scheme[SchemeNorm]); +- drw_rect(drw, x + curpos, 2, 2, bh - 4, 1, 0); ++ x = drw_text(drw, x, 0, promptw, bh, lrpad, prompt, 0); + } + + if (lines > 0) { +@@ -211,18 +187,18 @@ drawmenu(void) + } else if (matches) { + /* draw horizontal list */ + x += inputw; +- w = TEXTW("<"); ++ w = TEXTW(""); + if (curr->left) { + drw_setscheme(drw, scheme[SchemeNorm]); +- drw_text(drw, x, 0, w, bh, lrpad / 2, "<", 0); ++ drw_text(drw, x, 0, w, bh, lrpad, "", 0); + } + x += w; + for (item = curr; item != next; item = item->right) +- x = drawitem(item, x, 0, MIN(TEXTW(item->text), mw - x - TEXTW(">"))); ++ x = drawitem(item, x, 0, MIN(TEXTW(item->text), mw - x - TEXTW(""))); + if (next) { +- w = TEXTW(">"); ++ w = TEXTW(""); + drw_setscheme(drw, scheme[SchemeNorm]); +- drw_text(drw, mw - w, 0, w, bh, lrpad / 2, ">", 0); ++ drw_text(drw, mw - w, 0, w, bh, lrpad, "", 0); + } + } + drw_map(drw, win, 0, 0, mw, mh); +@@ -671,7 +647,7 @@ static void + readstdin(void) + { + char buf[sizeof text], *p; +- size_t i, imax = 0, size = 0; ++ size_t i, size = 0; + unsigned int tmpmax = 0; + + /* read each line from stdin and add it to the item list */ +@@ -687,12 +663,11 @@ readstdin(void) + drw_font_getexts(drw->fonts, buf, strlen(buf), &tmpmax, NULL); + if (tmpmax > inputw) { + inputw = tmpmax; +- imax = i; + } + } + if (items) + items[i].text = NULL; +- inputw = items ? TEXTW(items[imax].text) : 0; ++ inputw = 0; + lines = MIN(lines, i); + } + +@@ -805,7 +780,7 @@ setup(void) + y = topbar ? 0 : wa.height - mh; + mw = wa.width; + } +- promptw = (prompt && *prompt) ? TEXTW(prompt) - lrpad / 4 : 0; ++ promptw = (prompt && *prompt) ? TEXTW(prompt) - lrpad : 0; + inputw = MIN(inputw, mw/3); + match(); + +@@ -972,7 +947,7 @@ main(int argc, char *argv[]) + die("no fonts could be loaded."); + + free((char *) fonts[0]); +- lrpad = drw->fonts->h; ++ lrpad = 10; + + #ifdef __OpenBSD__ + if (pledge("stdio rpath", NULL) == -1) +diff --git a/drw.c b/drw.c +index 4cdbcbe..176ac37 100644 +--- a/drw.c ++++ b/drw.c +@@ -277,8 +277,8 @@ drw_text(Drw *drw, int x, int y, unsigned int w, unsigned int h, unsigned int lp + d = XftDrawCreate(drw->dpy, drw->drawable, + DefaultVisual(drw->dpy, drw->screen), + DefaultColormap(drw->dpy, drw->screen)); +- x += lpad; +- w -= lpad; ++ x += 0; ++ w -= 0; + } + + usedfont = drw->fonts; |