aboutsummaryrefslogtreecommitdiff
path: root/patches/compact.patch
diff options
context:
space:
mode:
Diffstat (limited to 'patches/compact.patch')
-rw-r--r--patches/compact.patch153
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;