Simplify DESTDIR
[xmenu] / xmenu.c
diff --git a/xmenu.c b/xmenu.c
index ff4cf53..8658a9d 100644 (file)
--- a/xmenu.c
+++ b/xmenu.c
@@ -1315,36 +1315,38 @@ enteritem:
                                ksym = XK_ISO_Left_Tab;
 
                        /* cycle through menu */
                                ksym = XK_ISO_Left_Tab;
 
                        /* cycle through menu */
-                       item = NULL;
+                       select = NULL;
                        ksym = normalizeksym(ksym);
                        switch (ksym) {
                        case XK_Home:
                        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:
                                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) {
                                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:
                                        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) {
                                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:
                                        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);
                                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);
@@ -1353,7 +1355,8 @@ enteritem:
                                        currmenu->selected = item;
                                        item = itemcycle(currmenu, ITEMNEXT);
                                }
                                        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) {
                                break;
                        case XK_Return: case XK_Right:
                                if (currmenu->selected) {
@@ -1363,26 +1366,27 @@ enteritem:
                                break;
                        case XK_Escape: case XK_Left:
                                if (currmenu->parent) {
                                break;
                        case XK_Escape: case XK_Left:
                                if (currmenu->parent) {
-                                       item = currmenu->parent->selected;
+                                       select = currmenu->parent->selected;
                                        currmenu = currmenu->parent;
                                        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:
                                }
                                break;
                        case XK_BackSpace: case XK_Clear: case XK_Delete:
-                               action = ACTION_CLEAR;
+                               action = ACTION_CLEAR | ACTION_SELECT | ACTION_DRAW;
                                break;
                        default:
 append:
                                break;
                        default:
 append:
+                               if (*buf == '\0' || iscntrl(*buf))
+                                       break;
                                for (i = 0; i < 2; i++) {
                                        append(text, buf, sizeof text, len);
                                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';
                                }
                                                break;
                                        text[0] = '\0';
                                }
+                               action = ACTION_SELECT | ACTION_DRAW;
                                break;
                        }
                                break;
                        }
-                       select = item;
-                       action |= ACTION_SELECT | ACTION_DRAW;
                        break;
                case LeaveNotify:
                        previtem = NULL;
                        break;
                case LeaveNotify:
                        previtem = NULL;
@@ -1485,7 +1489,7 @@ main(int argc, char *argv[])
        if ((xim = XOpenIM(dpy, NULL, NULL, NULL)) == NULL)
                errx(1, "XOpenIM: could not open input device");
 
        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);
        getresources();
        classh.res_class = PROGNAME;
        classh.res_name = getoptions(argc, argv);