diff options
Diffstat (limited to 'input_field.c')
| -rw-r--r-- | input_field.c | 16 |
1 files changed, 16 insertions, 0 deletions
diff --git a/input_field.c b/input_field.c index 75a0cbc..0fbaca6 100644 --- a/input_field.c +++ b/input_field.c @@ -19,6 +19,10 @@ void filter_items(client_state* state) { array_add(state->filtered_items, i); } } + + // select item + if (array_size(state->filtered_items) > 0) state->selected_filtered_item = 0; + else state->selected_filtered_item = -1; } void update_text_buffer(client_state* state) { @@ -39,6 +43,18 @@ bool type_key(client_state* state, xkb_keysym_t keysym) { return false; } + // select next + if (keysym == XKB_KEY_n && ctrl) { + state->selected_filtered_item = MIN(state->selected_filtered_item + 1, array_size(state->filtered_items) - 1); + return true; + } + + // select previous + if (keysym == XKB_KEY_p && ctrl) { + state->selected_filtered_item = MAX(state->selected_filtered_item - 1, 0); + return true; + } + // submit line if (keysym == XKB_KEY_Return || keysym == XKB_KEY_KP_Enter) { submit_line(state); |
