xwm: Handle WM_TRANSIENT_FOR
Set up X windows that are transient for another window as transient
surfaces in shell.c. This keeps the transient windows on top of their
parent as windows are raised, lowered for fullscreened.
https://bugs.freedesktop.org/show_bug.cgi?id=69443
diff --git a/desktop-shell/shell.c b/desktop-shell/shell.c
index 22202b4..b3b2b55 100644
--- a/desktop-shell/shell.c
+++ b/desktop-shell/shell.c
@@ -2127,6 +2127,10 @@
{
assert(parent != NULL);
+ shell_surface_set_parent(shsurf, parent);
+
+ surface_clear_next_states(shsurf);
+
shsurf->transient.x = x;
shsurf->transient.y = y;
shsurf->transient.flags = flags;
@@ -2149,9 +2153,6 @@
struct weston_surface *parent =
wl_resource_get_user_data(parent_resource);
- shell_surface_set_parent(shsurf, parent);
-
- surface_clear_next_states(shsurf);
set_transient(shsurf, parent, x, y, flags);
}