From: Jan Arne Petersen <jpeter...@openismus.com> Add cursor and anchor positions as arguments to the set_surrounding_text request. The cursor and anchor positions are relative to the surrounded text, so it does not make sense to have that separate. Remove the separate set_cursor_index and set_selected_text requests. Also update the corresponding event in input-method-context. --- clients/editor.c | 5 +++++ protocol/text.xml | 24 +++++++++++++++--------- src/text-backend.c | 26 +++++++------------------- 3 files changed, 27 insertions(+), 28 deletions(-)
diff --git a/clients/editor.c b/clients/editor.c index ac16c93..b180368 100644 --- a/clients/editor.c +++ b/clients/editor.c @@ -427,6 +427,11 @@ text_entry_update_layout(struct text_entry *entry) free(text); widget_schedule_redraw(entry->widget); + + text_model_set_surrounding_text(entry->model, + entry->text, + entry->cursor, + entry->anchor); } static void diff --git a/protocol/text.xml b/protocol/text.xml index a196b55..6a99eba 100644 --- a/protocol/text.xml +++ b/protocol/text.xml @@ -11,10 +11,15 @@ and compose text out of them. </description> <request name="set_surrounding_text"> + <description summary="sets the surrounding text"> + Sets the plain surrounding text around the input position. Cursor is the + position within the surrounding text. Anchor is the position of the + selection anchor within the surrounding text. If there is no selected + text anchor is the same as cursor. + </description> <arg name="text" type="string"/> - </request> - <request name="set_cursor_index"> - <arg name="index" type="uint"/> + <arg name="cursor" type="uint"/> + <arg name="anchor" type="uint"/> </request> <request name="activate"> <description summary="request activation"> @@ -35,10 +40,6 @@ </description> <arg name="seat" type="object" interface="wl_seat"/> </request> - <request name="set_selected_text"> - <arg name="text" type="string"/> - <arg name="index" type="int"/> - </request> <request name="set_micro_focus"> <arg name="x" type="int"/> <arg name="y" type="int"/> @@ -104,11 +105,16 @@ <arg name="text" type="string"/> <arg name="index" type="uint"/> </request> - <event name="set_surrounding_text"> + <event name="surrounding_text"> <description summary="surrounding text event"> - The surrounding text from the model. + The plain surrounding text around the input position. Cursor is the + position within the surrounding text. Anchor is the position of the + selection anchor within the surrounding text. If there is no selected + text anchor is the same as cursor. </description> <arg name="text" type="string"/> + <arg name="cursor" type="uint"/> + <arg name="anchor" type="uint"/> </event> </interface> diff --git a/src/text-backend.c b/src/text-backend.c index f3dee1d..3fd07b9 100644 --- a/src/text-backend.c +++ b/src/text-backend.c @@ -109,7 +109,9 @@ destroy_text_model(struct wl_resource *resource) static void text_model_set_surrounding_text(struct wl_client *client, struct wl_resource *resource, - const char *text) + const char *text, + uint32_t cursor, + uint32_t anchor) { struct text_model *text_model = resource->data; struct input_method *input_method, *next; @@ -117,18 +119,14 @@ text_model_set_surrounding_text(struct wl_client *client, wl_list_for_each_safe(input_method, next, &text_model->input_methods, link) { if (!input_method->context) continue; - input_method_context_send_set_surrounding_text(&input_method->context->resource, text); + input_method_context_send_surrounding_text(&input_method->context->resource, + text, + cursor, + anchor); } } static void -text_model_set_cursor_index(struct wl_client *client, - struct wl_resource *resource, - uint32_t index) -{ -} - -static void text_model_activate(struct wl_client *client, struct wl_resource *resource, struct wl_resource *seat, @@ -174,14 +172,6 @@ text_model_deactivate(struct wl_client *client, } static void -text_model_set_selected_text(struct wl_client *client, - struct wl_resource *resource, - const char *text, - int32_t index) -{ -} - -static void text_model_set_micro_focus(struct wl_client *client, struct wl_resource *resource, int32_t x, @@ -205,10 +195,8 @@ text_model_set_content_type(struct wl_client *client, static const struct text_model_interface text_model_implementation = { text_model_set_surrounding_text, - text_model_set_cursor_index, text_model_activate, text_model_deactivate, - text_model_set_selected_text, text_model_set_micro_focus, text_model_set_preedit, text_model_set_content_type -- 1.7.11.4 _______________________________________________ wayland-devel mailing list wayland-devel@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/wayland-devel