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;