From f638237a6b4f3d3edf9bdd995c15df537f8d7e7c Mon Sep 17 00:00:00 2001 From: Andrew Opalach Date: Fri, 24 Jan 2025 18:14:52 -0500 Subject: Fix multiple bugs encountered during stress test - Basic server resource cleanup Signed-off-by: Andrew Opalach --- src/fruits/cmc/ui/pane_search.c | 23 ++++++++++++++++++++--- 1 file changed, 20 insertions(+), 3 deletions(-) (limited to 'src/fruits/cmc') diff --git a/src/fruits/cmc/ui/pane_search.c b/src/fruits/cmc/ui/pane_search.c index 021c42f..c1b47ed 100644 --- a/src/fruits/cmc/ui/pane_search.c +++ b/src/fruits/cmc/ui/pane_search.c @@ -40,7 +40,7 @@ static bool handle_text_input(struct cmc_search_tab *tab, struct ncinput *input) switch (input->id) { case NCKEY_BACKSPACE: if (tab->cursor > 0) { - al_wstr_remove_at(&tab->input_text, tab->cursor); + al_wstr_remove_at(&tab->input_text, tab->cursor - 1); tab->cursor--; tab->input_changed = true; } @@ -79,19 +79,36 @@ static bool handle_text_input(struct cmc_search_tab *tab, struct ncinput *input) tab->cursor++; } break; + case 'U': + for (u32 i = 1; i <= tab->cursor; i++) { + al_wstr_remove_at(&tab->input_text, tab->cursor - i); + } + tab->cursor = 0; + tab->input_changed = true; + break; } break; } + + if (ncinput_alt_p(input) || nckey_synthesized_p(input->id)) { + break; + } + + al_wstr_insert(&tab->input_text, tab->cursor, &al_wstr_w((wchar_t *)input->eff_text, 0, 1)); + tab->cursor++; + tab->input_changed = true; + + /* // https://github.com/dankamongmen/notcurses/blob/c11efe877f2245901f5c9ce110de7a2c83cfa2ed/src/lib/reader.c#L404 for (s32 c = 0; input->eff_text[c] != 0; c++){ uchar egc[5] = { 0 }; if (notcurses_ucs32_to_utf8(&input->eff_text[c], 1, egc, 4) >= 0) { // This probably doesn't work on Windows. al_wstr_insert(&tab->input_text, tab->cursor, &al_wstr_w((wchar_t *)egc, 0, 1)); - tab->cursor++; - tab->input_changed = true; } } + */ + break; } return false; -- cgit v1.2.3-101-g0448