[PATCH wayland 2/4] protocol: clarify input region on drags and pointers
Ander Conselvan de Oliveira
conselvan2 at gmail.com
Wed Oct 10 03:28:07 PDT 2012
On 10/10/2012 12:47 PM, Pekka Paalanen wrote:
> Drag icon and cursor surfaces must never receive input, so their input
> region is always empty.
>
> Signed-off-by: Pekka Paalanen <ppaalanen at gmail.com>
> ---
> protocol/wayland.xml | 20 ++++++++++++++++----
> 1 files changed, 16 insertions(+), 4 deletions(-)
>
> diff --git a/protocol/wayland.xml b/protocol/wayland.xml
> index c45a404..6293f56 100644
> --- a/protocol/wayland.xml
> +++ b/protocol/wayland.xml
> @@ -332,8 +332,13 @@
> The icon surface is an optional (can be nil) surface that
> provides an icon to be moved around with the cursor. Initially,
> the top-left corner of the icon surface is placed at the cursor
> - hotspot, but subsequent surface.attach request can move the
> - relative position.
> + hotspot, but subsequent wl_surface.attach request can move the
> + relative position. Attach requests must be confirmed with
> + wl_surface.commit as usual.
> +
> + The current and pending input regions of the wl_surface are
> + cleared, and wl_surface.set_input_region is ignored until the
> + wl_surface is destroyed.
That's not the behavior implemented in Weston right now. When the drag
ends the user is able to set the input region again. In fact, the
surface just becomes a regular wl_surface with no specified role.
Also, start_drag takes two wl_surface arguments so the paragraph above
should make it clear it is referring to the icon surface.
> </description>
> <arg name="source" type="object" interface="wl_data_source" allow-null="true"/>
> <arg name="origin" type="object" interface="wl_surface"/>
> @@ -742,7 +747,9 @@
>
> wl_surface.set_input_region changes the pending input region.
> wl_surface.commit copies the pending region to the current region.
> - Otherwise the pending and current regions are never changed.
> + Otherwise the pending and current regions are never changed,
> + except cursor and icon surfaces are special cases, see
> + wl_pointer.set_cursor and wl_data_device.start_drag.
>
> The initial value for input region is infinite. That means the whole
> surface will accept input. Setting the pending input region has copy
> @@ -864,11 +871,16 @@
>
> On surface.attach requests to the pointer surface, hotspot_x
> and hotspot_y are decremented by the x and y parameters
> - passed to the request.
> + passed to the request. Attach must be confirmed by
> + wl_surface.commit as usual.
>
> The hotspot can also be updated by passing the current set
> pointer surface to this request with new values for hotspot_x
> and/or hotspot_y.
> +
> + The current and pending input regions of the wl_surface are
> + cleared, and wl_surface.set_input_region is ignored until the
> + wl_surface is destroyed.
Same thing here. Setting a new pointer surface releases the old one,
making it a regular wl_surface with no specified role.
Cheers,
Ander
More information about the wayland-devel
mailing list