[PATCH] protocol: Add a request and event to identify the visible area for a surface

Rob Bradford rob at robster.org.uk
Wed Feb 29 11:14:12 PST 2012

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 |   34 ++++++++++++++++++++++++++++++++++
 1 files changed, 34 insertions(+), 0 deletions(-)

diff --git a/protocol/wayland.xml b/protocol/wayland.xml
index 5cc13a8..57d1220 100644
--- a/protocol/wayland.xml
+++ b/protocol/wayland.xml
@@ -524,6 +524,40 @@
 	to the client owning the popup surface.
+    <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.
+      </description>
+      <arg name="x" type="int"/>
+      <arg name="y" type="int"/>
+      <arg name="width" type="int"/>
+      <arg name="height" type="int"/>
+    </request>
+    <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. It returns
+        the visible area that would the surface would occupy when taking into
+        consideration the 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 name="wl_surface" version="1">

More information about the wayland-devel mailing list