text: add support for invoke_action request

Add a request to be called by the client when the word currently being
composed is tapped by the user. Input methods often use this information
to offer more word suggestions to the user.

Signed-off-by: Jan Arne Petersen <jpetersen@openismus.com>
Jan Arne Petersen 12 years ago committed by Kristian Høgsberg
parent 0558a93eee
commit adfedc1965
  1. 4
      protocol/input-method.xml
  2. 4
      protocol/text.xml
  3. 19
      src/text-backend.c

@ -127,6 +127,10 @@
<arg name="hint" type="uint"/> <arg name="hint" type="uint"/>
<arg name="purpose" type="uint"/> <arg name="purpose" type="uint"/>
</event> </event>
<event name="invoke_action">
<arg name="button" type="uint"/>
<arg name="index" type="uint"/>
</event>
</interface> </interface>
<interface name="input_method" version="1"> <interface name="input_method" version="1">

@ -135,6 +135,10 @@
<arg name="hint" type="uint"/> <arg name="hint" type="uint"/>
<arg name="purpose" type="uint"/> <arg name="purpose" type="uint"/>
</request> </request>
<request name="invoke_action">
<arg name="button" type="uint"/>
<arg name="index" type="uint"/>
</request>
<event name="commit_string"> <event name="commit_string">
<description summary="commit"> <description summary="commit">
Notify when text should be inserted into the editor widget. The text Notify when text should be inserted into the editor widget. The text

@ -248,6 +248,22 @@ text_model_set_content_type(struct wl_client *client,
} }
} }
static void
text_model_invoke_action(struct wl_client *client,
struct wl_resource *resource,
uint32_t button,
uint32_t index)
{
struct text_model *text_model = resource->data;
struct input_method *input_method, *next;
wl_list_for_each_safe(input_method, next, &text_model->input_methods, link) {
if (!input_method->context)
continue;
input_method_context_send_invoke_action(&input_method->context->resource, button, index);
}
}
static const struct text_model_interface text_model_implementation = { static const struct text_model_interface text_model_implementation = {
text_model_set_surrounding_text, text_model_set_surrounding_text,
text_model_activate, text_model_activate,
@ -255,7 +271,8 @@ static const struct text_model_interface text_model_implementation = {
text_model_reset, text_model_reset,
text_model_set_micro_focus, text_model_set_micro_focus,
text_model_set_preedit, text_model_set_preedit,
text_model_set_content_type text_model_set_content_type,
text_model_invoke_action
}; };
static void text_model_factory_create_text_model(struct wl_client *client, static void text_model_factory_create_text_model(struct wl_client *client,

Loading…
Cancel
Save