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