[PATCH inputproto v2 2/4] XI2.1: Add confine_to to XIGrabDevice.

Jeremy Huddleston jeremyhu at apple.com
Mon Jun 6 22:04:30 PDT 2011


Yeah, I think the v1->v2 changes make sense.

On Jun 6, 2011, at 10:27 PM, Peter Hutterer wrote:

> From: Philipp Reh <sefi at s-e-f-i.de>
> 
> Updated the specs for XIGrabDevice which now
> sends an additional confine_to parameter after the mask.
> 
> The confine_to behaviour is the same as the core event behaviour: if the
> device is a pointer, the confine_to window determines the window the
> cursor is confined to during the grab.
> 
> Changes in protocol behaviour to XI 2.0:
> XIGrabDevice may return NotViewable if the confine_to is not viewable.
> 
> Signed-off-by: Philipp Reh <sefi at s-e-f-i.de>
> Reviewed-by: Peter Hutterer <peter.hutterer at who-t.net>
> Signed-off-by: Peter Hutterer <peter.hutterer at who-t.net>
> Reviewed-by: Jeremy Huddleston <jeremyhu at apple.com>
> ---
> Changes to v1:
> - slave devices can have confine_to as well. add the documentation
> 
> I've thought about the valuator range confinement and IMO we should just
> leave it at the current behaviour which proportionally clips it into the
> confine_to range. XI2 valuators are mainly there to give high precision data
> to the clients and if the pointer is confined, this data is confined too.
> Sending non-confined valuator ranges during a confine grab would put the
> burden of mapping the ranges into the confine_to dimensions on the client.
> 
> specs/XI2proto.txt |   16 +++++++++++++++-
> 1 files changed, 15 insertions(+), 1 deletions(-)
> 
> diff --git a/specs/XI2proto.txt b/specs/XI2proto.txt
> index 5abf9d4..a777d9a 100644
> --- a/specs/XI2proto.txt
> +++ b/specs/XI2proto.txt
> @@ -39,6 +39,7 @@ device information in each event (with the exception of core events).
> Changes introduced by version 2.1
> 
> - RawEvents are sent regardless of the grab state.
> +- XIGrabDevice takes a confine_to parameter
> 
> //                            ❧❧❧❧❧❧❧❧❧❧❧
> 
> @@ -822,10 +823,13 @@ Return the current focus window for the given device.
>             cursor:          Cursor
>             mask_len:        CARD16
>             masks:           SETofEVENTMASK
> +            confine_to*:     Window
>>             status:          Success, AlreadyGrabbed, Frozen, InvalidTime, NotViewable
>     └───
> 
> +    * since XI 2.1
> +
> This request actively grabs control of the specified input device. Further
> input events from this device are reported only to the grabbing client.
> This request overides any previous active grab by this client for this
> @@ -851,6 +855,8 @@ device.
>         Length of mask in 4 byte units.
>     mask
>         Event mask. An event mask for an event type T is defined as (1 << T).
> +    confine_to
> +        The window to confine the pointer to. Can be None.
>     status
>         Success or the reason why the grab could not be established.
> 
> @@ -887,10 +893,18 @@ devices are frozen; they are simply queued for later processing.
> If the cursor is not None and the device is a master pointer device, the
> cursor will be displayed until the device is ungrabbed.
> 
> +If the client supports XI 2.1 and confine_to is not None and the device
> +is a master pointer device or a slave device, the device will be confined
> +to that window. Reported root-relative coordinates are restricted to the
> +confine_to window. If the device reports valuators within an axis range,
> +the reported valuators are proportionally restricted to the confine_to
> +window.
> +
> This request fails and returns:
> 
>     AlreadyGrabbed: If the device is actively grabbed by some other client.
> -    NotViewable: If grab-window is not viewable.
> +    NotViewable: If grab-window or the confine_to window (if any) is not
> +                 viewable.
>     InvalidTime: If the specified time is earlier than the last-grab-time for
>                  the specified device or later than the current X server time.
>                  Otherwise, the last-grab-time for the specified device is set
> -- 
> 1.7.5.1
> 
> _______________________________________________
> xorg-devel at lists.x.org: X.Org development
> Archives: http://lists.x.org/archives/xorg-devel
> Info: http://lists.x.org/mailman/listinfo/xorg-devel



More information about the xorg-devel mailing list