[PATCH] xdg-shell: add draw states for xdg_surface

Mike Blumenkrantz zmike at osg.samsung.com
Fri May 27 15:29:33 UTC 2016

this adds a method for compositors to change various draw attributes
for a surface

Signed-off-by: Mike Blumenkrantz <zmike at osg.samsung.com>
Signed-off-by: Jonas Ã…dahl <jadahl at gmail.com>
 unstable/xdg-shell/xdg-shell-unstable-v6.xml | 69 ++++++++++++++++++++++++++++
 1 file changed, 69 insertions(+)

diff --git a/unstable/xdg-shell/xdg-shell-unstable-v6.xml b/unstable/xdg-shell/xdg-shell-unstable-v6.xml
index dfd7e84..0fa76d4 100644
--- a/unstable/xdg-shell/xdg-shell-unstable-v6.xml
+++ b/unstable/xdg-shell/xdg-shell-unstable-v6.xml
@@ -843,6 +843,75 @@
+    <enum name="draw_state">
+      <description summary="draw states for the surface">
+        The draw state enum defines optional states which describe how
+        a client should draw a surface. A client must at least support the
+        default state, and support for optional draw states is explicitly
+        advertised using xdg_toplevel.set_available_draw_states.
+        The default draw state implies that the client draws the surface
+        with complete window decorations.
+        This may include, e.g., window frame and drop shadow.
+        Each draw state defines an alteration to the default. Some draw
+        states may be combined, while some are mutually exclusive. See
+        each draw state for details.
+        Desktop environments may extend this enum by taking up a range of
+        values and documenting the range they chose in this description.
+        They are not required to document the values for the range that they
+        chose. Ideally, any good extensions from a desktop environment should
+        make its way into standardization into this enum.
+        The current reserved ranges are:
+        0x0000 - 0x0FFF: xdg-shell core values, documented below.
+        0x1000 - 0x1FFF: EFL
+      </description>
+      <entry name="no_shadow" value="1" summary="no dropshadow">
+        <description summary="the surface without a dropshadow">
+          The "no_shadow" draw state implies that the client must not draw
+          drop shadow around the surface. This may have side effects
+          on usability, e.g., the inability to activate client-initiated
+          interactive resize.
+        </description>
+      </entry>
+    </enum>
+    <event name="configure_draw_states">
+      <description summary="set the draw state(s) of the surface">
+        Set the draw state(s) which the client should use to draw a given
+        surface. The absence of this event prior to an xdg_surface.configure
+        event indicates that no change has occurred in the draw state since the
+        previous xdg_surface.configure.
+        Sending an empty array of states with this method resets a surface to the
+        default draw state.
+        This event is not sent by itself but as a latched state sent prior to
+        the xdg_surface.configure event. When received, a client should adapt
+        the drawing of the surface according to the state and respond to the
+        configure event accordingly. See xdg_surface.ack_configure for
+        details.
+        A compositor will only configure a client to draw with optional states on a
+        given surface using the states which were advertised by that surface using
+        xdg_toplevel.set_available_draw_states.
+      </description>
+      <arg name="states" type="array" enum="draw_state"/>
+    </event>
+    <request name="set_available_draw_states">
+      <description summary="advertise optional draw states for the window">
+        Inform the compositor of optional draw states which are available
+        for the xdg_toplevel.
+        Calling this after an xdg_toplevel's first commit will raise a client error.
+      </description>
+      <arg name="states" type="array" enum="draw_state"/>
+    </request>
     <event name="configure">
       <description summary="suggest a surface change">
 	This configure event asks the client to resize its toplevel surface or

More information about the wayland-devel mailing list