summaryrefslogtreecommitdiff
path: root/src/fruits
diff options
context:
space:
mode:
Diffstat (limited to 'src/fruits')
-rw-r--r--src/fruits/cmc/ui/pane_search.c23
1 files changed, 20 insertions, 3 deletions
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;