On 15/07/2016 13:00, Jonas Ådahl wrote:
The xdg_toplevel capabilities are meant to let the compositor know what
configurations a client can be configured to. This is meant to make it
possible to disallow a compositor to maximize, fullscreen etc a
surface, which would otherwise mandate the client to configure the
surface according to dimension in the xdg_toplevel.configure event.

This makes it possible to create non-resizable surfaces as well as
surfaces with only a certain aspect ratio allowed, by making them
un-fullscreen:able and un-maximize:able.

Signed-off-by: Jonas Ådahl <jad...@gmail.com>
---

This is an alternative solution to the s/must/should/ patch.

I made a separate enum, because certain state enum entries make no sense to
support or not, since they don't mandate anything (resize, activated so far).


I like this idea better than the s/must/should/ patch.

Since we do not reuse the existing enum, does that make sense to group similar features? The fullscreen/maximized/tiled states are about obeying an arbitrary size, you can still support even if you do nothing more. Sure, a fullscreen surface would look weird with a title bar, but it is usable, and will be on top of everything, just like intended.
Thoughts?

Nit: it should be <request> not <entry>. ;-)

Cheers,

Jonas

 unstable/xdg-shell/xdg-shell-unstable-v6.xml | 23 +++++++++++++++++++++++
 1 file changed, 23 insertions(+)

diff --git a/unstable/xdg-shell/xdg-shell-unstable-v6.xml 
b/unstable/xdg-shell/xdg-shell-unstable-v6.xml
index 563e39b..73944a8 100644
--- a/unstable/xdg-shell/xdg-shell-unstable-v6.xml
+++ b/unstable/xdg-shell/xdg-shell-unstable-v6.xml
@@ -734,6 +734,29 @@
       </entry>
     </enum>

+    <enum name="capabilities">
+      <description summary="toplevel capabilities">
+       Certain xdg_toplevel states mandate certain client capabilities. For
+       example while a fullscreen:ed client is required to configure itself
+       according to the dimension in the configure event, some clients may not
+       have this ability due to various reasons.
+      </description>
+      <entry name="maximize" value="1"
+            summary="the toplevel can be maximized"/>
+      <entry name="fullscreen" value="2"
+            summary="the toplevel can be fullscreened"/>
+    </enum>
+
+    <entry name="set_capabilities">
+      <description summary="set capabilities">
+       Notify the compositor about what capabilities this xdg_toplevel
+       supports. This request can only be issued once and if so must be done
+       before the initial state is comitted. The default capabilities are no
+       capabilities.
+      </description>
+      <arg name="caps" type="array" summary="array of toplevel capabilities"/>
+    </entry>
+
     <request name="set_max_size">
       <description summary="set the maximum size">
        Set a maximum size for the window.



--

Quentin “Sardem FF7” Glidic
_______________________________________________
wayland-devel mailing list
wayland-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/wayland-devel

Reply via email to