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);
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_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 (*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;
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);