From 56c5a1da4de4a7511882b2a9d4bae608aca1e61b Mon Sep 17 00:00:00 2001 From: Riley Beckett Date: Sun, 19 Oct 2025 00:26:59 -0400 Subject: change allow-free-result to exact-match --- input_field.c | 19 +++++++++---------- 1 file changed, 9 insertions(+), 10 deletions(-) (limited to 'input_field.c') diff --git a/input_field.c b/input_field.c index 31ae627..1601204 100644 --- a/input_field.c +++ b/input_field.c @@ -5,6 +5,7 @@ #include "graphics.h" void filter_items(client_state* state) { + if (!state->items) return; array_clear(state->filtered_items); // get null terminated input buffer @@ -12,14 +13,14 @@ void filter_items(client_state* state) { char input_buffer_string[len + 1]; memcpy(input_buffer_string, state->input_buffer, len); input_buffer_string[len] = '\0'; - + // add all strings with substring for (uint32_t i = 0; i < array_size(state->items); ++i) { if (strstr(state->items[i].text, input_buffer_string) != NULL) { 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; @@ -54,7 +55,7 @@ bool type_key(client_state* state, xkb_keysym_t keysym) { array_free(state->input_buffer); state->input_buffer = array_new(char, len); memcpy(state->input_buffer, selected, len); - + update_text_buffer(state); } return true; @@ -105,15 +106,13 @@ bool type_key(client_state* state, xkb_keysym_t keysym) { } void submit_line(client_state* state) { - if (state->selected_filtered_item == -1) { - if (state->allow_free_result) { - printf("%.*s\n", (int)array_size(state->input_buffer), state->input_buffer); - } else { - return; - } - } else { + if (state->exact_match) { + if (state->selected_filtered_item == -1) return; printf("%s\n", state->items[state->filtered_items[state->selected_filtered_item]].text); } + else { + printf("%.*s\n", (int)array_size(state->input_buffer), state->input_buffer); + } state->running = false; state->exit_code = EXIT_SUCCESS; } -- cgit v1.2.3