Some application may wish to restrict their window in size, but xdg-shell has no mechanism for the client to specify a maximum or minimum size.
As a result, the compositor may try to maximize or fullscreen a window while the client would not allow for the requested size. Add new requests "set_max_size" and "set_min_size" to xdg-shell so that the client can tell the compositor what would be its smallest/largest acceptable size, and that the compositor can decide if maximize or fullscreen is achievable, draw an accurate animation, etc. Signed-off-by: Olivier Fourdan <ofour...@redhat.com> Bugzilla: https://bugzilla.gnome.org/show_bug.cgi?id=764413 --- v2: Rename the request to "set_preferred_max_size", add "set_preferred_min_size" as well v3: Rebase above patch 72427 in branch xdg-shell-unstable-v6 Rephrase description to clarify the unscaled size and using 0 to reset back the preferred size to an unspecified state v4: Patch the correct xml file (v6, not v5 <facepalm>) Fix multiple mismatch of min/max in the description Remove mention of "unscaled", specify window geometry coordinates and refer to set_window_geometry. v5: Fix typos and remove "preferred" from the name and description as requested by several people on the ML and irc. unstable/xdg-shell/xdg-shell-unstable-v6.xml | 60 ++++++++++++++++++++++++++++ 1 file changed, 60 insertions(+) diff --git a/unstable/xdg-shell/xdg-shell-unstable-v6.xml b/unstable/xdg-shell/xdg-shell-unstable-v6.xml index 3fc7d42..8ab84f5 100644 --- a/unstable/xdg-shell/xdg-shell-unstable-v6.xml +++ b/unstable/xdg-shell/xdg-shell-unstable-v6.xml @@ -489,6 +489,66 @@ <arg name="states" type="array"/> </event> + <request name="set_max_size"> + <description summary="set the maximum size"> + Set a maximum size for the window. + + The client can specify a maximum size so that the compositor does + not try to configure the window beyond this size. + + The width and height arguments are in window geometry coordinates. + See set_window_geometry. + + The compositor can use this information to allow or disallow + different states like maximize or fullscreen and draw accurate + animations. + + Similarly, a tiling window manager may use this information to + place and resize client windows in a more effective way. + + If never set, the maximum size of the window is not limited by + the client. + + A value of zero in the request for either width, height or both + means that the client has no expected maximum size in the given + dimension. As a result, a client wishing to reset the maximum size + to an unspecified state can use zero for width and height in the + request. + </description> + <arg name="width" type="int"/> + <arg name="height" type="int"/> + </request> + + <request name="set_min_size"> + <description summary="set the minimum size"> + Set a minimum size for the window. + + The client can specify a minimum size so that the compositor does + not try to configure the window below this size. + + The width and height arguments are in window geometry coordinates. + See set_window_geometry. + + The compositor can use this information to allow or disallow + different states like maximize or fullscreen and draw accurate + animations. + + Similarly, a tiling window manager may use this information to + place and resize client windows in a more effective way. + + If never set, the minimum size of the window is not limited by + the client. + + A value of zero in the request for either width, height or both + means that the client has no expected minimum size in the given + dimension. As a result, a client wishing to reset the minimum size + to an unspecified state can use zero for width and height in the + request. + </description> + <arg name="width" type="int"/> + <arg name="height" type="int"/> + </request> + <request name="set_maximized"> <description summary="maximize the window"> Maximize the surface. -- 2.5.5 _______________________________________________ wayland-devel mailing list wayland-devel@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/wayland-devel