diff options
author | terminaldweller <thabogre@gmail.com> | 2022-04-22 06:08:33 +0000 |
---|---|---|
committer | terminaldweller <thabogre@gmail.com> | 2022-04-22 06:08:33 +0000 |
commit | 6fff7c34f07aa7b3ad504654eab310f63f44ad4c (patch) | |
tree | 02925cfc81b02d93fbccaea74f8d40ec2da868f7 /dmenu.c | |
parent | initial commit (diff) | |
download | dmenu-6fff7c34f07aa7b3ad504654eab310f63f44ad4c.tar.gz dmenu-6fff7c34f07aa7b3ad504654eab310f63f44ad4c.zip |
added center patch
Diffstat (limited to '')
-rw-r--r-- | dmenu.c | 26 |
1 files changed, 20 insertions, 6 deletions
@@ -120,6 +120,13 @@ static void calcoffsets(void) { 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 cleanup(void) { size_t i; @@ -914,6 +921,7 @@ static void setup(void) { bh = drw->fonts->h + 2; lines = MAX(lines, 0); mh = (lines + 1) * bh; + promptw = (prompt && *prompt) ? TEXTW(prompt) - lrpad / 4 : 0; #ifdef XINERAMA i = 0; if (parentwin == root && (info = XineramaQueryScreens(dpy, &n))) { @@ -942,18 +950,24 @@ static void setup(void) { if (INTERSECT(x, y, 1, 1, info[i])) break; - x = info[i].x_org; - y = info[i].y_org + (topbar ? 0 : info[i].height - mh); - mw = info[i].width; + /* x = info[i].x_org; */ + /* y = info[i].y_org + (topbar ? 0 : info[i].height - mh); */ + /* mw = info[i].width; */ + mw = MIN(MAX(max_textw() + promptw, 100), info[i].width); + x = info[i].x_org + ((info[i].width - mw) / 2); + y = info[i].y_org + ((info[i].height - mh) / 2); XFree(info); } else #endif { if (!XGetWindowAttributes(dpy, parentwin, &wa)) die("could not get embedding window attributes: 0x%lx", parentwin); - x = 0; - y = topbar ? 0 : wa.height - mh; - mw = wa.width; + /* x = 0; */ + /* y = topbar ? 0 : wa.height - mh; */ + /* mw = wa.width; */ + mw = MIN(MAX(max_textw() + promptw, 100), wa.width); + x = (wa.width - mw) / 2; + y = (wa.height - mh) / 2; } promptw = (prompt && *prompt) ? TEXTW(prompt) - lrpad / 4 : 0; inputw = MIN(inputw, mw / 3); |