Wayland compositor (wlroots)
git clone https://git.lucas.co/cce-compositor.git
rwm: tighten up window creation sequence
protocol/river-window-management-v1.xml | 23 ++++++++++++++++++++---
1 file changed, 20 insertions(+), 3 deletions(-)
diff --git a/protocol/river-window-management-v1.xml b/protocol/river-window-management-v1.xml
index 2ea526f..af618a3 100644
--- a/protocol/river-window-management-v1.xml
+++ b/protocol/river-window-management-v1.xml
@@ -192,9 +192,20 @@
This represents a logical window. For example, a window may correspond to
an xdg_toplevel or Xwayland window.
- A newly created window will not be displayed until the window manager
- client makes a river_window_v1.propose_dimensions request and the
- following river_window_manager_v1.commit request.
+ A newly created window will not be displayed until the window manager:
+ 1. proposes window dimensions (river_window_v1.propose_dimensions)
+ 2. places the window in the render list (river_node_v1.place_above/below)
+ 3. commits the pending state (river_window_manager_v1.commit)
+
+ It is a protocol error to commit proposed dimensions without placing the new
+ window in the render list or vice versa.
+
+ The window manager should make this initial commit for new windows as soon
+ as possible after receiving the corresponding update event.
+
+ TODO:
+ - size hints (including unset state)
+ - window cropping
</description>
<request name="destroy" type="destructor">
@@ -280,6 +291,9 @@
Request that the window be hidden. Has no effect if the window is already
hidden. Hides any window borders and decorations as well.
+ Newly created windows are considered shown unless explicitly hidden with
+ the hide request.
+
This request is double-buffered state and will not be applied until the
next river_window_manager_v1.commit request.
</description>
@@ -291,6 +305,9 @@
hidden. Does not guarantee that the window is visible as it may be
completely obscured by other windows placed above it for example.
+ Newly created windows are considered shown unless explicitly hidden with
+ the hide request.
+
This request is double-buffered state and will not be applied until the
next river_window_manager_v1.commit request.
</description>