inputw: improve correctness and startup performance, by NRK

Always use ~30% of the monitor width for the input in horizontal mode.

Patch adapted from NRK patches.
This also does not calculate inputw when using vertical mode anymore (because
the code is removed).
This commit is contained in:
Hiltjo Posthuma 2022-04-29 20:15:48 +02:00
parent 33685b06e9
commit e1e1de7b3b

10
dmenu.c
View file

@ -610,13 +610,12 @@ static void
setup(void) setup(void)
{ {
int x, y, i, j; int x, y, i, j;
unsigned int du, tmp; unsigned int du;
XSetWindowAttributes swa; XSetWindowAttributes swa;
XIM xim; XIM xim;
Window w, dw, *dws; Window w, dw, *dws;
XWindowAttributes wa; XWindowAttributes wa;
XClassHint ch = {"dmenu", "dmenu"}; XClassHint ch = {"dmenu", "dmenu"};
struct item *item;
#ifdef XINERAMA #ifdef XINERAMA
XineramaScreenInfo *info; XineramaScreenInfo *info;
Window pw; Window pw;
@ -674,12 +673,7 @@ setup(void)
mw = wa.width; mw = wa.width;
} }
promptw = (prompt && *prompt) ? TEXTW(prompt) - lrpad / 4 : 0; promptw = (prompt && *prompt) ? TEXTW(prompt) - lrpad / 4 : 0;
for (item = items; item && item->text; ++item) { inputw = mw / 3; /* input width: ~30% of monitor width */
if ((tmp = textw_clamp(item->text, mw/3)) > inputw) {
if ((inputw = tmp) == mw/3)
break;
}
}
match(); match();
/* create menu window */ /* create menu window */