Center dmenu

This commit is contained in:
Victor Timofei 2021-06-27 16:08:31 +03:00
parent 07314a14de
commit 6b8becb2a4
Signed by: vtimofei
GPG Key ID: B790DCEBE281403A
1 changed files with 16 additions and 7 deletions

23
dmenu.c
View File

@ -102,6 +102,15 @@ calcoffsets(void)
break; break;
} }
static int
max_textw(void)
{
int len = 0;
for (struct item *item = items; item && item->text; item++)
len = MAX(TEXTW(item->text), len);
return len;
}
static void static void
cleanup(void) cleanup(void)
{ {
@ -751,6 +760,7 @@ setup(void)
bh = drw->fonts->h + 2; bh = drw->fonts->h + 2;
lines = MAX(lines, 0); lines = MAX(lines, 0);
mh = (lines + 1) * bh; mh = (lines + 1) * bh;
promptw = (prompt && *prompt) ? TEXTW(prompt) - lrpad / 4 : 0;
#ifdef XINERAMA #ifdef XINERAMA
i = 0; i = 0;
if (parentwin == root && (info = XineramaQueryScreens(dpy, &n))) { if (parentwin == root && (info = XineramaQueryScreens(dpy, &n))) {
@ -777,9 +787,9 @@ setup(void)
if (INTERSECT(x, y, 1, 1, info[i])) if (INTERSECT(x, y, 1, 1, info[i]))
break; break;
x = info[i].x_org; mw = MIN(MAX(max_textw() + promptw, 100), info[i].width);
y = info[i].y_org + (topbar ? 0 : info[i].height - mh); x = info[i].x_org + ((info[i].width - mw) / 2);
mw = info[i].width; y = info[i].y_org + ((info[i].height - mh) / 2);
XFree(info); XFree(info);
} else } else
#endif #endif
@ -787,11 +797,10 @@ setup(void)
if (!XGetWindowAttributes(dpy, parentwin, &wa)) if (!XGetWindowAttributes(dpy, parentwin, &wa))
die("could not get embedding window attributes: 0x%lx", die("could not get embedding window attributes: 0x%lx",
parentwin); parentwin);
x = 0; mw = MIN(MAX(max_textw() + promptw, 100), wa.width);
y = topbar ? 0 : wa.height - mh; x = (wa.width - mw) / 2;
mw = wa.width; y = (wa.height - mh) / 2;
} }
promptw = (prompt && *prompt) ? TEXTW(prompt) - lrpad / 4 : 0;
inputw = MIN(inputw, mw/3); inputw = MIN(inputw, mw/3);
match(); match();