wayland: Represent preedit string cursor offset in bytes
Both IBus and ClutterInputFocus work in character offsets for the cursor position in the preedit string. However the zwp_text_input protocol does define the preedit string cursor offset to be in bytes. Fixes client bugs in representing the caret within the preedit string, as we were clearly giving the wrong offset. Fixes: https://gitlab.gnome.org/GNOME/gtk/issues/2517 https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/1132
This commit is contained in:
parent
fa74da0039
commit
db9b60cc63
@ -207,12 +207,14 @@ meta_wayland_text_input_focus_set_preedit_text (ClutterInputFocus *focus,
|
|||||||
{
|
{
|
||||||
MetaWaylandTextInput *text_input;
|
MetaWaylandTextInput *text_input;
|
||||||
struct wl_resource *resource;
|
struct wl_resource *resource;
|
||||||
|
gsize pos;
|
||||||
|
|
||||||
text_input = META_WAYLAND_TEXT_INPUT_FOCUS (focus)->text_input;
|
text_input = META_WAYLAND_TEXT_INPUT_FOCUS (focus)->text_input;
|
||||||
|
pos = g_utf8_offset_to_pointer (text, cursor) - text;
|
||||||
|
|
||||||
wl_resource_for_each (resource, &text_input->focus_resource_list)
|
wl_resource_for_each (resource, &text_input->focus_resource_list)
|
||||||
{
|
{
|
||||||
zwp_text_input_v3_send_preedit_string (resource, text, cursor, cursor);
|
zwp_text_input_v3_send_preedit_string (resource, text, pos, pos);
|
||||||
}
|
}
|
||||||
|
|
||||||
meta_wayland_text_input_focus_defer_done (focus);
|
meta_wayland_text_input_focus_defer_done (focus);
|
||||||
|
Loading…
Reference in New Issue
Block a user