mirror of
https://codeberg.org/dnkl/foot.git
synced 2026-03-21 05:33:45 -04:00
ime: render pre-edit text
This is done by allocating cells for the pre-edit text when receiving the text-input::done() call, and populating them by converting the utf-8 formatted pre-edit text to wchars. We also convert the pre-edit cursor position to cell positions (it can cover multiple cells). When rendering, we simply render the pre-edit cells on-top off the regular grid. While doing so, we also mark the underlying, “real”, cells as dirty, to ensure they are re-rendered when the pre-edit text is modified or removed.
This commit is contained in:
parent
5745c610ac
commit
8c3d48c5cd
8 changed files with 364 additions and 60 deletions
21
wayland.h
21
wayland.h
|
|
@ -15,6 +15,9 @@
|
|||
|
||||
#include "fdm.h"
|
||||
|
||||
/* Forward declarations */
|
||||
struct terminal;
|
||||
|
||||
typedef tll(xkb_keycode_t) xkb_keycode_list_t;
|
||||
|
||||
struct key_binding {
|
||||
|
|
@ -225,18 +228,24 @@ struct seat {
|
|||
struct zwp_text_input_v3 *wl_text_input;
|
||||
struct {
|
||||
struct {
|
||||
char *text;
|
||||
int32_t cursor_begin;
|
||||
int32_t cursor_end;
|
||||
struct {
|
||||
char *text;
|
||||
int32_t cursor_begin;
|
||||
int32_t cursor_end;
|
||||
} pending;
|
||||
} preedit;
|
||||
|
||||
struct {
|
||||
char *text;
|
||||
struct {
|
||||
char *text;
|
||||
} pending;
|
||||
} commit;
|
||||
|
||||
struct {
|
||||
uint32_t before_length;
|
||||
uint32_t after_length;
|
||||
struct {
|
||||
uint32_t before_length;
|
||||
uint32_t after_length;
|
||||
} pending;
|
||||
} surrounding;
|
||||
|
||||
uint32_t serial;
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue