X-Git-Url: https://git.subgeniuskitty.com/xmenu/.git/blobdiff_plain/28f784a7a47952d302632a41c2e43ff03318f930..88341d204bd1ad3f95943190a6eea22cb4bf07da:/xmenu.c diff --git a/xmenu.c b/xmenu.c index acdabc2..8658a9d 100644 --- a/xmenu.c +++ b/xmenu.c @@ -141,7 +141,7 @@ getoptions(int argc, char *argv[]) { int ch; - while ((ch = getopt(argc, argv, "ip:rtw")) != -1) { + while ((ch = getopt(argc, argv, "ip:rw")) != -1) { switch (ch) { case 'i': iflag = 1; @@ -153,9 +153,6 @@ getoptions(int argc, char *argv[]) case 'r': rflag = 1; break; - case 't': - config.typetoselect = !config.typetoselect; - break; case 'w': wflag = 1; break; @@ -1318,36 +1315,38 @@ enteritem: ksym = XK_ISO_Left_Tab; /* cycle through menu */ - item = NULL; + select = NULL; ksym = normalizeksym(ksym); switch (ksym) { case XK_Home: - item = itemcycle(currmenu, ITEMFIRST); - action = ACTION_CLEAR; + select = itemcycle(currmenu, ITEMFIRST); + action = ACTION_CLEAR | ACTION_SELECT | ACTION_DRAW; break; case XK_End: - item = itemcycle(currmenu, ITEMLAST); - action = ACTION_CLEAR; + select = itemcycle(currmenu, ITEMLAST); + action = ACTION_CLEAR | ACTION_SELECT | ACTION_DRAW; break; case XK_ISO_Left_Tab: if (*text) { - item = matchitem(currmenu, text, -1); + select = matchitem(currmenu, text, -1); + action = ACTION_SELECT | ACTION_DRAW; break; } /* FALLTHROUGH */ case XK_Up: - item = itemcycle(currmenu, ITEMPREV); - action = ACTION_CLEAR; + select = itemcycle(currmenu, ITEMPREV); + action = ACTION_CLEAR | ACTION_SELECT | ACTION_DRAW; break; case XK_Tab: if (*text) { - item = matchitem(currmenu, text, 1); + select = matchitem(currmenu, text, 1); + action = ACTION_SELECT | ACTION_DRAW; break; } /* FALLTHROUGH */ case XK_Down: - item = itemcycle(currmenu, ITEMNEXT); - action = ACTION_CLEAR; + select = itemcycle(currmenu, ITEMNEXT); + action = ACTION_CLEAR | ACTION_SELECT | ACTION_DRAW; break; case XK_1: case XK_2: case XK_3: case XK_4: case XK_5: case XK_6: case XK_7: case XK_8: case XK_9: item = itemcycle(currmenu, ITEMFIRST); @@ -1356,7 +1355,8 @@ enteritem: currmenu->selected = item; item = itemcycle(currmenu, ITEMNEXT); } - action = ACTION_CLEAR; + select = item; + action = ACTION_CLEAR | ACTION_SELECT | ACTION_DRAW; break; case XK_Return: case XK_Right: if (currmenu->selected) { @@ -1366,28 +1366,27 @@ enteritem: break; case XK_Escape: case XK_Left: if (currmenu->parent) { - item = currmenu->parent->selected; + select = currmenu->parent->selected; currmenu = currmenu->parent; - action = ACTION_CLEAR | ACTION_MAP; + action = ACTION_CLEAR | ACTION_MAP | ACTION_SELECT | ACTION_DRAW; } break; case XK_BackSpace: case XK_Clear: case XK_Delete: - action = ACTION_CLEAR; + action = ACTION_CLEAR | ACTION_SELECT | ACTION_DRAW; break; default: append: - if (!config.typetoselect) + if (*buf == '\0' || iscntrl(*buf)) break; for (i = 0; i < 2; i++) { append(text, buf, sizeof text, len); - if ((item = matchitem(currmenu, text, 0))) + if ((select = matchitem(currmenu, text, 0))) break; text[0] = '\0'; } + action = ACTION_SELECT | ACTION_DRAW; break; } - select = item; - action |= ACTION_SELECT | ACTION_DRAW; break; case LeaveNotify: previtem = NULL; @@ -1490,7 +1489,7 @@ main(int argc, char *argv[]) if ((xim = XOpenIM(dpy, NULL, NULL, NULL)) == NULL) errx(1, "XOpenIM: could not open input device"); - /* get configuration */ + /* process configuration and window class */ getresources(); classh.res_class = PROGNAME; classh.res_name = getoptions(argc, argv);