aboutsummaryrefslogtreecommitdiff
path: root/keybind.c
diff options
context:
space:
mode:
authorJack Jamison <jackqjamison@gmail.com>2025-11-08 18:17:52 -0500
committerJack Jamison <jackqjamison@gmail.com>2025-11-08 18:17:52 -0500
commitd0b1b2db2210d4fe31701d144d03a37ea55ece00 (patch)
treee23a61d925aca202b8835f8f8e3c34097e4ce783 /keybind.c
parent6e038b0c45c1c2e351ce6ead8b80bc7b1031988f (diff)
allow selecting the prompt
Diffstat (limited to 'keybind.c')
-rw-r--r--keybind.c9
1 files changed, 5 insertions, 4 deletions
diff --git a/keybind.c b/keybind.c
index 0a23e5d..5e357fb 100644
--- a/keybind.c
+++ b/keybind.c
@@ -39,7 +39,7 @@ key_repeat_t insert_selected(client_state* state) {
}
key_repeat_t select_next(client_state* state) {
- if (state->selected_filtered_item != -1) {
+ if (state->selected_filtered_item + 1 < array_size(state->filtered_items)) {
state->selected_filtered_item = MIN(state->selected_filtered_item + 1, (int)array_size(state->filtered_items) - 1);
rect_t prompt, input, options;
calculate_layout(state, &prompt, &input, &options, true, false);
@@ -49,7 +49,8 @@ key_repeat_t select_next(client_state* state) {
key_repeat_t select_previous(client_state* state) {
if (state->selected_filtered_item != -1) {
- state->selected_filtered_item = MAX(state->selected_filtered_item - 1, 0);
+ state->selected_filtered_item = MAX(state->selected_filtered_item - 1, state->exact_match ? 0 : -1);
+ if (state->selected_filtered_item == -1) state->forced_selected_zero = false;
rect_t prompt, input, options;
calculate_layout(state, &prompt, &input, &options, true, false);
}
@@ -57,7 +58,7 @@ key_repeat_t select_previous(client_state* state) {
}
key_repeat_t select_first(client_state* state) {
- if (state->selected_filtered_item != -1) {
+ if (array_size(state->filtered_items) > 0) {
state->selected_filtered_item = 0;
rect_t prompt, input, options;
calculate_layout(state, &prompt, &input, &options, true, false);
@@ -66,7 +67,7 @@ key_repeat_t select_first(client_state* state) {
}
key_repeat_t select_last(client_state* state) {
- if (state->selected_filtered_item != -1) {
+ if (array_size(state->filtered_items) > 0) {
state->selected_filtered_item = array_size(state->filtered_items) - 1;
rect_t prompt, input, options;
calculate_layout(state, &prompt, &input, &options, true, false);