return key == ' ' || key == '\r' || key == '\n' || key == KEY_ENTER;
}
-static bool key_is_minus(int key)
-{
- return key == 055;
-}
-
-static bool key_is_left(int key)
-{
- return key == KEY_LEFT;
-}
-
-static bool key_is_right(int key)
-{
- return key == KEY_RIGHT;
-}
-
static bool process_key_nop(struct nc_widget *widget __attribute__((unused)),
FORM *form __attribute((unused)),
int key __attribute__((unused)))
struct nc_widget *widget;
size_t rem;
int i, val;
+ uint32_t opts;
/* Shift field focus to nearest active option or next visible field */
if (subset->n_active > 1) {
} else {
for (i = 0; i < set->n_fields; i++)
if (field_visible(set->fields[i])) {
- set->cur_field = set->fields[i];
- break;
+ opts = field_opts(set->fields[i]);
+ if ((opts & O_ACTIVE) == O_ACTIVE) {
+ set->cur_field = set->fields[i];
+ break;
+ }
}
}
int i, val, opt_idx = -1;
FIELD *field;
- if (!key_is_minus(key) && !key_is_left(key) && !key_is_right(key))
+ if (key != '-' && key != '+' && key != KEY_DC && key != KEY_BACKSPACE)
return false;
field = current_field(form);
if (opt_idx < 0)
return false;
- if (key_is_minus(key))
+ if (key == KEY_DC || key == KEY_BACKSPACE)
subset_delete_active(subset, opt_idx);
- if (key_is_left(key)){
+ if (key == '-') {
if (opt_idx == 0)
return true;
subset->active[opt_idx - 1] = val;
}
- if (key_is_right(key)){
+ if (key == '+') {
if (opt_idx >= subset->n_active - 1)
return true;
tab = true;
/* fall through */
case KEY_UP:
+ case KEY_LEFT:
req = REQ_SPREV_FIELD;
break;
case '\t':
tab = true;
/* fall through */
case KEY_DOWN:
+ case KEY_RIGHT:
req = REQ_SNEXT_FIELD;
break;
case KEY_PPAGE: