X-Git-Url: https://git.xinqibao.xyz/dmenu.git/blobdiff_plain/b7695fa98cb75c1f2ac342227bbebf4e648f37e7..0b8072a5a93cfa6869983748932f9e5679fbfe2d:/dmenu.c diff --git a/dmenu.c b/dmenu.c index f19e798..a1d0ed2 100644 --- a/dmenu.c +++ b/dmenu.c @@ -109,6 +109,7 @@ drawmenu(void) { dc->x = 0; dc->y = 0; drawrect(dc, 0, 0, mw, mh, BG(dc, normcol)); + dc->h = dc->font.height + 2; dc->y = topbar ? 0 : mh - dc->h; /* print prompt? */ @@ -118,7 +119,7 @@ drawmenu(void) { dc->x = dc->w; } dc->w = mw - dc->x; - /* print input area */ + /* print input field */ if(matches && lines == 0 && textw(dc, text) <= inputw) dc->w = inputw; drawtext(dc, text, normcol); @@ -135,7 +136,7 @@ drawmenu(void) { else if(curr && (dc->w == inputw || curr->next)) { dc->x += inputw; dc->w = textw(dc, "<"); - if(prev) + if(curr->left) drawtext(dc, "<", normcol); for(item = curr; item != next; item = item->right) { dc->x += dc->w; @@ -193,6 +194,9 @@ keypress(XKeyEvent *e) { case XK_c: ksym = XK_Escape; break; + case XK_d: + ksym = XK_Delete; + break; case XK_e: ksym = XK_End; break; @@ -206,7 +210,6 @@ keypress(XKeyEvent *e) { ksym = XK_Tab; break; case XK_j: - case XK_m: ksym = XK_Return; break; case XK_k: /* delete right */ @@ -338,7 +341,7 @@ keypress(XKeyEvent *e) { void match(void) { - unsigned int len; + size_t len; Item *item, *itemend, *lexact, *lprefix, *lsubstr, *exactend, *prefixend, *substrend; len = strlen(text); @@ -453,7 +456,7 @@ setup(void) { selcol[ColBG] = getcolor(dc, selbgcolor); selcol[ColFG] = getcolor(dc, selfgcolor); - /* input window geometry */ + /* menu geometry */ mh = (dc->font.height + 2) * (lines + 1); #ifdef XINERAMA if((info = XineramaQueryScreens(dc->dpy, &n))) { @@ -477,7 +480,7 @@ setup(void) { y = topbar ? 0 : DisplayHeight(dc->dpy, screen) - mh; mw = DisplayWidth(dc->dpy, screen); } - /* input window */ + /* menu window */ wa.override_redirect = True; wa.background_pixmap = ParentRelative; wa.event_mask = ExposureMask | KeyPressMask | VisibilityChangeMask; @@ -487,7 +490,7 @@ setup(void) { CWOverrideRedirect | CWBackPixmap | CWEventMask, &wa); grabkeyboard(); - setcanvas(dc, win, mw, mh); + setcanvas(dc, mw, mh); inputw = MIN(inputw, mw/3); promptw = prompt ? MIN(textw(dc, prompt), mw/5) : 0; XMapRaised(dc->dpy, win); @@ -524,13 +527,12 @@ main(int argc, char *argv[]) { else if(i == argc-1) usage(); /* double flags */ - else if(!strcmp(argv[i], "-l")) { + else if(!strcmp(argv[i], "-l")) lines = atoi(argv[++i]); - } else if(!strcmp(argv[i], "-p")) prompt = argv[++i]; else if(!strcmp(argv[i], "-fn")) - initfont(dc, argv[i++]); + initfont(dc, argv[++i]); else if(!strcmp(argv[i], "-nb")) normbgcolor = argv[++i]; else if(!strcmp(argv[i], "-nf"))