mirror of
https://codeberg.org/dnkl/foot.git
synced 2026-03-29 07:58:01 -04:00
term: insert-mode: handle combining characters correctly
When the client application emits combining characters, for example multi-codepoint emojis, in insert-mode, we ended up pushing partial graphemes to the right, for each codepoint, resulting in too many cells (and with the wrong content) being inserted. The fix is fairly simple; don't "insert" when appending characters to an existing grapheme cluster. This isn't something we can detect easily in print_insert() (it would require us to do grapheme clustering again). Fortunately, we do have the required information in action_utf8_print(). So, pass this information as a boolean to term_print(). Closes #1947
This commit is contained in:
parent
dd01783f88
commit
88dcde3ed8
5 changed files with 14 additions and 6 deletions
|
|
@ -894,7 +894,8 @@ void term_cursor_up(struct terminal *term, int count);
|
|||
void term_cursor_down(struct terminal *term, int count);
|
||||
void term_cursor_blink_update(struct terminal *term);
|
||||
|
||||
void term_print(struct terminal *term, char32_t wc, int width);
|
||||
void term_print(struct terminal *term, char32_t wc, int width,
|
||||
bool insert_mode_disable);
|
||||
void term_fill(struct terminal *term, int row, int col, uint8_t c, size_t count,
|
||||
bool use_sgr_attrs);
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue