mirror of
https://codeberg.org/dnkl/foot.git
synced 2026-02-05 04:06:08 -05:00
ime: store wchar version of pre-edit string in terminal struct
This commit is contained in:
parent
7c420004fb
commit
194fbff883
3 changed files with 8 additions and 4 deletions
9
ime.c
9
ime.c
|
|
@ -150,15 +150,16 @@ done(void *data, struct zwp_text_input_v3 *zwp_text_input_v3,
|
|||
|
||||
if (wchars > 0) {
|
||||
/* First, convert to unicode */
|
||||
wchar_t wcs[wchars + 1];
|
||||
mbstowcs(wcs, seat->ime.preedit.pending.text, wchars);
|
||||
term->ime.preedit.text = xmalloc((wchars + 1) * sizeof(wchar_t));
|
||||
mbstowcs(term->ime.preedit.text, seat->ime.preedit.pending.text, wchars);
|
||||
term->ime.preedit.text[wchars] = L'\0';
|
||||
|
||||
/* Next, count number of cells needed */
|
||||
size_t cell_count = 0;
|
||||
size_t widths[wchars + 1];
|
||||
|
||||
for (size_t i = 0; i < wchars; i++) {
|
||||
int width = max(wcwidth(wcs[i]), 1);
|
||||
int width = max(wcwidth(term->ime.preedit.text[i]), 1);
|
||||
widths[i] = width;
|
||||
cell_count += width;
|
||||
}
|
||||
|
|
@ -174,7 +175,7 @@ done(void *data, struct zwp_text_input_v3 *zwp_text_input_v3,
|
|||
|
||||
int width = widths[i];
|
||||
|
||||
cell->wc = wcs[i];
|
||||
cell->wc = term->ime.preedit.text[i];
|
||||
cell->attrs = (struct attributes){.clean = 0, .underline = 1};
|
||||
|
||||
for (int j = 1; j < width; j++) {
|
||||
|
|
|
|||
|
|
@ -2819,7 +2819,9 @@ term_ime_reset(struct terminal *term)
|
|||
{
|
||||
#if defined(FOOT_IME_ENABLED) && FOOT_IME_ENABLED
|
||||
if (term->ime.preedit.cells != NULL) {
|
||||
free(term->ime.preedit.text);
|
||||
free(term->ime.preedit.cells);
|
||||
term->ime.preedit.text = NULL;
|
||||
term->ime.preedit.cells = NULL;
|
||||
term->ime.preedit.count = 0;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -475,6 +475,7 @@ struct terminal {
|
|||
struct {
|
||||
bool enabled;
|
||||
struct {
|
||||
wchar_t *text;
|
||||
struct cell *cells;
|
||||
int count;
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue