On Wed, 10 Oct 2012 13:28:07 +0300
Ander Conselvan de Oliveira <[email protected]> wrote:

> 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 <[email protected]>
> > ---
> >   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.

Right, that is different to how wl_shell surface types work, that also
use the weston_surface:configure field. More below...

> Also, start_drag takes two wl_surface arguments so the paragraph above 
> should make it clear it is referring to the icon surface.

Will do.

> >         </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.

Ok, I missed the pointer_unmap_sprite().

What should we specify for the input regions after the surface is no
longer a pointer sprite or a drag icon? Undefined, empty, infinite, or
the region it was before becoming a pointer sprite? We need to specify
it for both current and pending input regions.


Thanks,
pq
_______________________________________________
wayland-devel mailing list
[email protected]
http://lists.freedesktop.org/mailman/listinfo/wayland-devel

Reply via email to