[PATCH 3/3] text: Add some documentation to the text protocol.

Michael Hasselmann michaelh at openismus.com
Tue Aug 21 13:32:40 PDT 2012

On Tue, 2012-08-21 at 18:28 +0200, Jan Arne Petersen wrote:
> From: Jan Arne Petersen <jpetersen at openismus.com>
> +    <description summary="text model">
> +      A model for text input. Adds support for text input and input methods to
> +      applications. A text_model object is created from a text_model_factory and
> +      corresponds typically to a text entry in an application. Requests are used
> +      to activate/deactivate the model and set informations like surrounding and
> +      selected text or the content type. The information about entered text is
> +      sent to the model via the preedit and commit events.
> +    </description>

I think this paragraph deserves a more high-level introduction, because
the concept we introduce here is a somewhat new approach:

Traditionally, applications (or the toolkit in use) would assume they
process hardware events directly and try to compose text from that. With
the text model, for the majority of use-cases, this should no longer be
necessary. A regular text editor should work by just using this
protocol, without direct hardware event processing.

This is also what we try to prove in the Weston example, no?

>      <request name="set_surrounding_text">
>        <arg name="text" type="string"/>
>      </request>
> @@ -7,10 +15,21 @@
>        <arg name="index" type="uint"/>
>      </request>
>      <request name="activate">
> +      <description summary="request activation">
> +        Requests the model to be activated (typically when the text entry gets
> +        focus). The seat argument is a wl_seat which maintains the focus for
> +        this activation. The surface argument is a wl_surface assigned to the
> +        model and tracked for focus lost.
> +      </description>

If it is a request, you should perhaps explain under which condition it
can get rejected. I can imagine that the compositor would deny
activation of a text model that is bound to an invisible surface.

Also mention that upon successful activation, you'll get the activated
event (but perhaps that's already so well established as a general
concept in Wayland we don't have to mention it all the time).

>        <arg name="seat" type="object" interface="wl_seat"/>
>        <arg name="surface" type="object" interface="wl_surface"/>
>      </request>
>      <request name="deactivate">
> +      <description summary="request activation">

Wrong summary.

> +    <event name="deactivated">
> +      <description summary="deactivated event">
> +        Notify the model when it is deactivated. Either in response to a
> +        deactivate request or when the assigned surface lost focus or was
> +	destroyed.
> +      </description>
> +    </event>

So when would a surface lose focus? Please list some cases.

>    </interface>
>    <interface name="text_model_factory" version="1">
> +    <description summary="text model factory">
> +      A factory for text models. This object is a singleton global.
> +    </description>

Allows the compositor to keep track of issued text models, right?
Perhaps mention why we do that.

>    <interface name="input_method_context" version="1">
> +    <description summary="input method context">
> +      Corresponds to a text model on input method side. An input method context
> +      is created on text mode activation on the input method side. It allows to
> +      receive information about the text model from the application via events.
> +      Input method contexts do not keep state after deactivation and should be
> +      destroyed after deactivation is handled.
> +    </description>

Could make it a bit more visual by writing: "input_method_context
mirrors the text_model on the input method side. Requests become events
and events become requests.

> +    <description summary="input method">
> +      An input method object is responsible to compose text in repsonse to

                                                            typo --^

> +      input from hardware or virtual keyboards. There is one input method
> +      object per seat. On activate there is a new input method context object
> +      created which allows the input method to communicate with the text model.
> +    </description>

More information about the wayland-devel mailing list