fixed missing lines
[xmenu] / xmenu.c
diff --git a/xmenu.c b/xmenu.c
index acdabc2..465d405 100644 (file)
--- a/xmenu.c
+++ b/xmenu.c
@@ -141,7 +141,7 @@ getoptions(int argc, char *argv[])
 {
        int ch;
 
 {
        int ch;
 
-       while ((ch = getopt(argc, argv, "ip:rtw")) != -1) {
+       while ((ch = getopt(argc, argv, "ip:rw")) != -1) {
                switch (ch) {
                case 'i':
                        iflag = 1;
                switch (ch) {
                case 'i':
                        iflag = 1;
@@ -153,9 +153,6 @@ getoptions(int argc, char *argv[])
                case 'r':
                        rflag = 1;
                        break;
                case 'r':
                        rflag = 1;
                        break;
-               case 't':
-                       config.typetoselect = !config.typetoselect;
-                       break;
                case 'w':
                        wflag = 1;
                        break;
                case 'w':
                        wflag = 1;
                        break;
@@ -1323,31 +1320,33 @@ enteritem:
                        switch (ksym) {
                        case XK_Home:
                                item = itemcycle(currmenu, ITEMFIRST);
                        switch (ksym) {
                        case XK_Home:
                                item = itemcycle(currmenu, ITEMFIRST);
-                               action = ACTION_CLEAR;
+                               action = ACTION_CLEAR | ACTION_SELECT | ACTION_DRAW;
                                break;
                        case XK_End:
                                item = itemcycle(currmenu, ITEMLAST);
                                break;
                        case XK_End:
                                item = itemcycle(currmenu, ITEMLAST);
-                               action = ACTION_CLEAR;
+                               action = ACTION_CLEAR | ACTION_SELECT | ACTION_DRAW;
                                break;
                        case XK_ISO_Left_Tab:
                                if (*text) {
                                        item = matchitem(currmenu, text, -1);
                                break;
                        case XK_ISO_Left_Tab:
                                if (*text) {
                                        item = matchitem(currmenu, text, -1);
+                                       action = ACTION_SELECT | ACTION_DRAW;
                                        break;
                                }
                                /* FALLTHROUGH */
                        case XK_Up:
                                item = itemcycle(currmenu, ITEMPREV);
                                        break;
                                }
                                /* FALLTHROUGH */
                        case XK_Up:
                                item = itemcycle(currmenu, ITEMPREV);
-                               action = ACTION_CLEAR;
+                               action = ACTION_CLEAR | ACTION_SELECT | ACTION_DRAW;
                                break;
                        case XK_Tab:
                                if (*text) {
                                        item = matchitem(currmenu, text, 1);
                                break;
                        case XK_Tab:
                                if (*text) {
                                        item = matchitem(currmenu, text, 1);
+                                       action = ACTION_SELECT | ACTION_DRAW;
                                        break;
                                }
                                /* FALLTHROUGH */
                        case XK_Down:
                                item = itemcycle(currmenu, ITEMNEXT);
                                        break;
                                }
                                /* FALLTHROUGH */
                        case XK_Down:
                                item = itemcycle(currmenu, ITEMNEXT);
-                               action = ACTION_CLEAR;
+                               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);
@@ -1356,13 +1355,14 @@ enteritem:
                                        currmenu->selected = item;
                                        item = itemcycle(currmenu, ITEMNEXT);
                                }
                                        currmenu->selected = item;
                                        item = itemcycle(currmenu, ITEMNEXT);
                                }
-                               action = ACTION_CLEAR;
+                               action = ACTION_CLEAR | ACTION_SELECT | ACTION_DRAW;
                                break;
                        case XK_Return: case XK_Right:
                                if (currmenu->selected) {
                                        item = currmenu->selected;
                                        goto enteritem;
                                }
                                break;
                        case XK_Return: case XK_Right:
                                if (currmenu->selected) {
                                        item = currmenu->selected;
                                        goto enteritem;
                                }
+                               action = ACTION_SELECT | ACTION_DRAW;
                                break;
                        case XK_Escape: case XK_Left:
                                if (currmenu->parent) {
                                break;
                        case XK_Escape: case XK_Left:
                                if (currmenu->parent) {
@@ -1370,13 +1370,14 @@ enteritem:
                                        currmenu = currmenu->parent;
                                        action = ACTION_CLEAR | ACTION_MAP;
                                }
                                        currmenu = currmenu->parent;
                                        action = ACTION_CLEAR | ACTION_MAP;
                                }
+                               action = 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 (!config.typetoselect)
+                               if (*buf == '\0' || iscntrl(*buf))
                                        break;
                                for (i = 0; i < 2; i++) {
                                        append(text, buf, sizeof text, len);
                                        break;
                                for (i = 0; i < 2; i++) {
                                        append(text, buf, sizeof text, len);
@@ -1384,10 +1385,10 @@ append:
                                                break;
                                        text[0] = '\0';
                                }
                                                break;
                                        text[0] = '\0';
                                }
+                               action = ACTION_SELECT | ACTION_DRAW;
                                break;
                        }
                        select = item;
                                break;
                        }
                        select = item;
-                       action |= ACTION_SELECT | ACTION_DRAW;
                        break;
                case LeaveNotify:
                        previtem = NULL;
                        break;
                case LeaveNotify:
                        previtem = NULL;
@@ -1490,7 +1491,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);