[PATCH v2 wayland 1/2] protocol: Add a request and event to identify the visible area for a surface

Scott Moreau oreaus at gmail.com
Fri Feb 8 11:49:17 PST 2013


On Fri, Feb 8, 2013 at 8:11 AM, Rob Bradford <robert.bradford at intel.com>wrote:

> From: Rob Bradford <rob at linux.intel.com>
>
> Add a probe_area request to the wl_shell_surface interface along with a
> visible_area event to communicate the result of the probe.
>
> The intention of this request and event is to allow the client to try and
> refine the placement of popup windows that would otherwise be unusable.
> ---
>  protocol/wayland.xml | 40 ++++++++++++++++++++++++++++++++++++++++
>  1 file changed, 40 insertions(+)
>
> diff --git a/protocol/wayland.xml b/protocol/wayland.xml
> index 0ce68ef..c4673e5 100644
> --- a/protocol/wayland.xml
> +++ b/protocol/wayland.xml
> @@ -729,6 +729,46 @@
>         to the client owning the popup surface.
>        </description>
>      </event>
> +
> +    <request name="probe_area">
> +      <description summary="query the compositor for visible area for a
> transient surface">
> +        Asks the compositor what the visible area for a surface would be
> if it
> +        was positioned with the proposed rectangle relative to the
> provided
> +        surface. The visible_area event will be fired with the area that
> the
> +        compositor would show. The client can then use this information to
> +        reposition the surface as appropriate for its needs. The
> intention is
> +        for this request to be used by clients looking to find the ideal
> +        location for a popup window whilst still respecting the borders
> of the
> +        output.
> +
> +        The object returned by this request will be destroyed by the
> +        compositor after the area is returned and as such the client must
> not
> +        attempt to use it after that point.
> +      </description>
> +      <arg name="x" type="int"/>
> +      <arg name="y" type="int"/>
> +      <arg name="width" type="int"/>
> +      <arg name="height" type="int"/>
> +      <arg name="result" type="new_id" interface="wl_probe_result"/>
> +    </request>
> +  </interface>
> +
> +  <interface name="wl_probe_result" version="1">
> +    <event name="visible_area">
> +      <description summary="the area that would be visible for a proposed
> transient surface">
> +        This event is fired in response to the probe_area request on the
> +        object returned for that request. It returns the visible area that
> +        the surface would occupy when taking into consideration the
> +        output's edges. If the width or height is zero this indicates
> that the
> +        window would not be visible at all in that dimension. In that
> case the
> +        x and y values represent the distance to the edge of the viewable
> +        area.
> +      </description>
> +      <arg name="x" type="int"/>
> +      <arg name="y" type="int"/>
> +      <arg name="width" type="int"/>
> +      <arg name="height" type="int"/>
> +    </event>
>    </interface>
>
>    <interface name="wl_surface" version="2">
> --
>
>
Hi Rob,

Wouldn't a client then be able to compute its absolute position in global
coordinates using this protocol and the output information? In any case,
I'm not sure this makes sense as a whole. It seems there would be a
tendency for clients to use the probe request repeatedly to find the
information it wants. Is there a problem communicating the type of surface
so the compositor can place it?
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.freedesktop.org/archives/wayland-devel/attachments/20130208/b65425ab/attachment.html>


More information about the wayland-devel mailing list