From: Jan Arne Petersen <[email protected]> Support content types in text protocol. Content is defined by a hint bitmask and a purpose field.
Signed-off-by: Jan Arne Petersen <[email protected]> --- protocol/input-method.xml | 4 ++++ protocol/text.xml | 52 ++++++++++++++++++++++++++++++++++++++++++++++- src/text-backend.c | 12 ++++++++++- 3 files changed, 66 insertions(+), 2 deletions(-) diff --git a/protocol/input-method.xml b/protocol/input-method.xml index 03991f1..a57fabd 100644 --- a/protocol/input-method.xml +++ b/protocol/input-method.xml @@ -123,6 +123,10 @@ <event name="reset"> <arg name="serial" type="uint"/> </event> + <event name="content_type"> + <arg name="hint" type="uint"/> + <arg name="purpose" type="uint"/> + </event> </interface> <interface name="input_method" version="1"> diff --git a/protocol/text.xml b/protocol/text.xml index bd74ee1..17fbc93 100644 --- a/protocol/text.xml +++ b/protocol/text.xml @@ -83,8 +83,58 @@ <arg name="height" type="int"/> </request> <request name="set_preedit"/> - <request name="set_content_type"/> + <enum name="content_hint"> + <description summary="content hint"> + Content hint is a bitmask to allow to modify the behavior of the text input + </description> + <entry name="none" value="0x0" summary="no special behaviour"/> + <entry name="default" value="0x7" summary="auto completion, cotrrection and capitalization"/> + <entry name="password" value="0xc" summary="hidden and sensitive text"/> + <entry name="auto_completion" value="0x1" summary="suggest word completions"/> + <entry name="auto_correction" value="0x2" summary="suggest word corrections"/> + <entry name="auto_capitalization" value="0x4" summary="switch to upercase letters at the end of a sentence"/> + <entry name="lowercase" value="0x8" summary="prefer lowercase letters"/> + <entry name="uppercase" value="0x10" summary="prefer upercase letters"/> + <entry name="titlecase" value="0x20" summary="switch to upercase letters at the end of a word"/> + <entry name="hidden_text" value="0x40" summary="characters should be hidden"/> + <entry name="sensitive_data" value="0x80" summary="typed text should not be stored"/> + <entry name="multiline" value="0x200" summary="the text input is multiline"/> + </enum> + <enum name="content_purpose"> + <description summary="content purpose"> + The content purpose allows to specify the primary purpose of a text input. + This allows an input method to show special purpose input panels or to + disallow some characters. + </description> + <entry name="normal" value="0" summary="default input, allowing all characters"/> + <entry name="latin" value="1" summary="allow just latin characters"/> + <entry name="alpha" value="2" summary="allow only alphabetic characters"/> + <entry name="digits" value="3" summary="allow only digits"/> + <entry name="number" value="4" summary="input a number (including decimal dot and sign)"/> + <entry name="phone" value="5" summary="input a ohone number"/> + <entry name="url" value="6" summary="input an URL"/> + <entry name="email" value="7" summary="input an email address"/> + <entry name="name" value="8" summary="input a name of a person"/> + <entry name="password" value="9" summary="input a password (combine with password or sensistive_data hint)"/> + <entry name="date" value="10" summary="input a date"/> + <entry name="time" value="11" summary="input a time"/> + <entry name="datetime" value="12" summary="input a date and time"/> + <entry name="terminal" value="13" summary="input for a terminal, show special control keys on a virtual keyboard"/> + </enum> + <request name="set_content_type"> + <description summary="set content purpose and hint"> + Sets the content purpose and content hint. While the purpose is the + basic purpose of an input field, the hint flags allow to modify some + of the behavior. + + When no content type is explicitly set, a normal content purpose with + default hints (auto completion, auto correction, auto capitalization) + should be assumed. + </description> + <arg name="hint" type="uint"/> + <arg name="purpose" type="uint"/> + </request> <event name="commit_string"> <description summary="commit"> Notify when text should be inserted into the editor widget. The text diff --git a/src/text-backend.c b/src/text-backend.c index cc8fa43..d074347 100644 --- a/src/text-backend.c +++ b/src/text-backend.c @@ -234,8 +234,18 @@ text_model_set_preedit(struct wl_client *client, static void text_model_set_content_type(struct wl_client *client, - struct wl_resource *resource) + struct wl_resource *resource, + uint32_t hint, + uint32_t purpose) { + 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_content_type(&input_method->context->resource, hint, purpose); + } } static const struct text_model_interface text_model_implementation = { -- 1.7.11.7 _______________________________________________ wayland-devel mailing list [email protected] http://lists.freedesktop.org/mailman/listinfo/wayland-devel
