X-Git-Url: https://git.danieliu.xyz/?a=blobdiff_plain;f=dmenu.c;h=608023daf38a005834be2e3f44f16dff09b036b3;hb=06c18808b6f23bc5120533559e70fbcbff753e84;hp=7dfc2d3481077b1777da9cda319872d7d82f7268;hpb=a7aee433ccfd2590e0785a7b93a89d8d0593a234;p=dmenu.git diff --git a/dmenu.c b/dmenu.c index 7dfc2d3..608023d 100644 --- a/dmenu.c +++ b/dmenu.c @@ -42,6 +42,7 @@ static void setup(void); static void usage(void); static char text[4096]; +static int promptw; static size_t cursor = 0; static const char *prompt = NULL; static const char *normbgcolor = "#cccccc"; @@ -79,7 +80,7 @@ void calcoffsetsh(void) { unsigned int w, x; - w = (prompt ? textw(dc, prompt) : 0) + inputw + textw(dc, "<") + textw(dc, ">"); + w = promptw + inputw + textw(dc, "<") + textw(dc, ">"); for(x = w, next = curr; next; next = next->right) if((x += MIN(textw(dc, next->text), mw / 3)) > mw) break; @@ -118,7 +119,7 @@ drawmenu(void) { dc->y = topbar ? 0 : mh - dc->h; /* print prompt? */ if(prompt) { - dc->w = textw(dc, prompt); + dc->w = promptw; drawtext(dc, prompt, selcol); dc->x = dc->w; } @@ -506,7 +507,9 @@ setup(void) { grabkeyboard(); setcanvas(dc, win, mw, mh); inputw = MIN(inputw, mw/3); + promptw = prompt ? MIN(textw(dc, prompt), mw/5) : 0; XMapRaised(dc->dpy, win); + text[0] = '\0'; match(); }