aboutsummaryrefslogtreecommitdiff
path: root/input_field.c
diff options
context:
space:
mode:
authorJack Jamison <jackqjamison@gmail.com>2025-10-17 23:12:12 -0400
committerJack Jamison <jackqjamison@gmail.com>2025-10-17 23:12:12 -0400
commit2afa6a39629fb331d284afa454b9aa50e7f0adcf (patch)
tree22bd7c345dd63bd61c1ebce5460c9b4f52b2bc91 /input_field.c
parent9cdc8540fa3f7d36d48b44f9e955652b6e17dd91 (diff)
basic selection
Diffstat (limited to 'input_field.c')
-rw-r--r--input_field.c16
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);