mirror of
https://gitlab.freedesktop.org/wayland/wayland-protocols.git
synced 2025-12-20 04:40:06 +01:00
Merge branch 'work/xdg-shell-fullscreen' into 'main'
stable/xdg-shell: allow compositors to support transparent fullscreen windows See merge request wayland/wayland-protocols!377
This commit is contained in:
commit
7329c7a0a4
1 changed files with 64 additions and 10 deletions
|
|
@ -1093,16 +1093,16 @@
|
|||
it's up to the compositor to choose which display will be used to map
|
||||
this surface.
|
||||
|
||||
If the surface doesn't cover the whole output, the compositor will
|
||||
position the surface in the center of the output and compensate with
|
||||
with border fill covering the rest of the output. The content of the
|
||||
border fill is undefined, but should be assumed to be in some way that
|
||||
attempts to blend into the surrounding area (e.g. solid black).
|
||||
If the surface doesn't cover the whole output or isn't opaque,
|
||||
the compositor may apply either of the behaviors described by the
|
||||
fullscreen_behavior enum.
|
||||
While compositors are recommended to apply the opaqueness_enforced
|
||||
behavior for best backwards compatibility with protocol versions 6
|
||||
and ealier, this is not implemented by all compositors, so clients
|
||||
can't fully rely on it.
|
||||
|
||||
If the fullscreened surface is not opaque, the compositor must make
|
||||
sure that other screen content not part of the same surface tree (made
|
||||
up of subsurfaces, popups or similarly coupled surfaces) are not
|
||||
visible below the fullscreened surface.
|
||||
If a specific behavior is desired, it should be explicitly requested
|
||||
with set_fullscreen_2.
|
||||
</description>
|
||||
<arg name="output" type="object" interface="wl_output" allow-null="true"/>
|
||||
</request>
|
||||
|
|
@ -1211,8 +1211,16 @@
|
|||
<enum name="wm_capabilities" since="5">
|
||||
<entry name="window_menu" value="1" summary="show_window_menu is available"/>
|
||||
<entry name="maximize" value="2" summary="set_maximized and unset_maximized are available"/>
|
||||
<entry name="fullscreen" value="3" summary="set_fullscreen and unset_fullscreen are available"/>
|
||||
<entry name="fullscreen" value="3">
|
||||
<description summary="set_fullscreen and unset_fullscreen are available">
|
||||
Starting with version 7, this also means set_fullscreen_2 is available.
|
||||
</description>
|
||||
</entry>
|
||||
<entry name="minimize" value="4" summary="set_minimized is available"/>
|
||||
<entry name="opaque_fullscreen" value="5"
|
||||
summary="fullscreen behavior opaqueness_enforced is available" since="7"/>
|
||||
<entry name="transparent_fullscreen" value="6"
|
||||
summary="fullscreen behavior transparency_allowed is available" since="7"/>
|
||||
</enum>
|
||||
|
||||
<event name="wm_capabilities" since="5">
|
||||
|
|
@ -1240,6 +1248,52 @@
|
|||
</description>
|
||||
<arg name="capabilities" type="array" summary="array of 32-bit capabilities"/>
|
||||
</event>
|
||||
|
||||
<enum name="fullscreen_behavior" since="7">
|
||||
<entry name="opaqueness_enforced" value="0">
|
||||
<description summary="no surfaces below the window are shown">
|
||||
If the surface doesn't cover the whole output, the compositor will
|
||||
position the surface in the center of the output and compensate with
|
||||
with border fill covering the rest of the output. The content of the
|
||||
border fill is undefined, but should be assumed to be in some way that
|
||||
attempts to blend into the surrounding area (e.g. solid black).
|
||||
|
||||
If the fullscreened surface is not opaque, the compositor must make
|
||||
sure that other screen content not part of the same surface tree (made
|
||||
up of subsurfaces, popups or similarly coupled surfaces) are not
|
||||
visible below the fullscreened surface.
|
||||
</description>
|
||||
</entry>
|
||||
<entry name="transparency_allowed" value="1">
|
||||
<description summary="surfaces below the window may be shown">
|
||||
If the surface doesn't cover the whole output, the behavior is
|
||||
compositor-specific. The client should avoid this situation.
|
||||
|
||||
If the fullscreened surface is not opaque, the compositor should
|
||||
show elements below the surface tree.
|
||||
</description>
|
||||
</entry>
|
||||
<entry name="dont_care" value="2" summary="the compositor should choose"/>
|
||||
</enum>
|
||||
|
||||
<request name="set_fullscreen_2" since="7">
|
||||
<description summary="set the window as fullscreen on an output">
|
||||
Make the surface fullscreen with the desired behavior.
|
||||
|
||||
After requesting that the surface should be fullscreened, the
|
||||
compositor will respond by emitting a configure event. Whether the
|
||||
client is actually put into a fullscreen state is subject to compositor
|
||||
policies. The client must also acknowledge the configure when
|
||||
committing the new content (see ack_configure).
|
||||
|
||||
The output passed by the request indicates the client's preference as
|
||||
to which display it should be set fullscreen on. If this value is NULL,
|
||||
it's up to the compositor to choose which display will be used to map
|
||||
this surface.
|
||||
</description>
|
||||
<arg name="output" type="object" interface="wl_output" allow-null="true"/>
|
||||
<arg name="desired_behavior" type="uint" enum="fullscreen_behavior"/>
|
||||
</request>
|
||||
</interface>
|
||||
|
||||
<interface name="xdg_popup" version="7">
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue