diff --git a/clutter/clutter/clutter-input-focus-private.h b/clutter/clutter/clutter-input-focus-private.h index ccde45d0e..5bc7e9494 100644 --- a/clutter/clutter/clutter-input-focus-private.h +++ b/clutter/clutter/clutter-input-focus-private.h @@ -35,6 +35,7 @@ void clutter_input_focus_request_surrounding (ClutterInputFocus *focus); void clutter_input_focus_set_preedit_text (ClutterInputFocus *focus, const gchar *preedit, - guint cursor); + unsigned int cursor, + unsigned int anchor); #endif /* __CLUTTER_INPUT_FOCUS_PRIVATE_H__ */ diff --git a/clutter/clutter/clutter-input-focus.c b/clutter/clutter/clutter-input-focus.c index bf4f15ab8..af94e6afa 100644 --- a/clutter/clutter/clutter-input-focus.c +++ b/clutter/clutter/clutter-input-focus.c @@ -108,7 +108,7 @@ clutter_input_focus_reset (ClutterInputFocus *focus) if (priv->mode == CLUTTER_PREEDIT_RESET_COMMIT) clutter_input_focus_commit (focus, priv->preedit); - clutter_input_focus_set_preedit_text (focus, NULL, 0); + clutter_input_focus_set_preedit_text (focus, NULL, 0, 0); g_clear_pointer (&priv->preedit, g_free); } @@ -207,7 +207,8 @@ clutter_input_focus_filter_event (ClutterInputFocus *focus, priv->preedit = g_strdup (event->im.text); priv->mode = event->im.mode; clutter_input_focus_set_preedit_text (focus, event->im.text, - event->im.offset); + event->im.offset, + event->im.anchor); return TRUE; } @@ -290,9 +291,11 @@ clutter_input_focus_request_surrounding (ClutterInputFocus *focus) void clutter_input_focus_set_preedit_text (ClutterInputFocus *focus, const gchar *preedit, - guint cursor) + unsigned int cursor, + unsigned int anchor) { g_return_if_fail (CLUTTER_IS_INPUT_FOCUS (focus)); - CLUTTER_INPUT_FOCUS_GET_CLASS (focus)->set_preedit_text (focus, preedit, cursor); + CLUTTER_INPUT_FOCUS_GET_CLASS (focus)->set_preedit_text (focus, preedit, + cursor, anchor); } diff --git a/clutter/clutter/clutter-input-focus.h b/clutter/clutter/clutter-input-focus.h index 77f5d9076..a2df71ee9 100644 --- a/clutter/clutter/clutter-input-focus.h +++ b/clutter/clutter/clutter-input-focus.h @@ -48,7 +48,8 @@ struct _ClutterInputFocusClass void (* set_preedit_text) (ClutterInputFocus *focus, const gchar *preedit, - guint cursor); + guint cursor, + guint anchor); }; CLUTTER_EXPORT diff --git a/clutter/clutter/clutter-text.c b/clutter/clutter/clutter-text.c index a437afbef..b3c430b36 100644 --- a/clutter/clutter/clutter-text.c +++ b/clutter/clutter/clutter-text.c @@ -398,7 +398,8 @@ clutter_text_input_focus_commit_text (ClutterInputFocus *focus, static void clutter_text_input_focus_set_preedit_text (ClutterInputFocus *focus, const gchar *preedit_text, - guint cursor_pos) + unsigned int cursor_pos, + unsigned int anchor_pos) { ClutterText *clutter_text = CLUTTER_TEXT_INPUT_FOCUS (focus)->text; diff --git a/src/wayland/meta-wayland-text-input.c b/src/wayland/meta-wayland-text-input.c index cf40f0218..949ec4dda 100644 --- a/src/wayland/meta-wayland-text-input.c +++ b/src/wayland/meta-wayland-text-input.c @@ -248,7 +248,8 @@ meta_wayland_text_input_focus_commit_text (ClutterInputFocus *focus, static void meta_wayland_text_input_focus_set_preedit_text (ClutterInputFocus *focus, const gchar *text, - guint cursor) + unsigned int cursor, + unsigned int anchor) { MetaWaylandTextInput *text_input; gsize pos = 0; @@ -265,7 +266,7 @@ meta_wayland_text_input_focus_set_preedit_text (ClutterInputFocus *focus, pos = g_utf8_offset_to_pointer (text, cursor) - text; text_input->preedit.cursor = pos; - text_input->preedit.anchor = pos; + text_input->preedit.anchor = anchor; text_input->preedit.changed = TRUE; meta_wayland_text_input_focus_defer_done (focus);