From ae2f3ecb6824e168083580a601af53d6c9544b5d Mon Sep 17 00:00:00 2001 From: Tudor Brindus Date: Sun, 2 May 2021 12:50:36 -0400 Subject: xwm: implement _NET_CLIENT_LIST_STACKING This property is present on all modern X11 instances. The nonpresence of it requires applications to fall back to XQueryTree-based logic to determine stacking logic (e.g., to determine what surface should get Xdnd events). These code paths are effectively untested nowadays, so this makes it more likely for wlroots to "break" applications. For instance, the XQueryTree fallback path has been broken in Chromium for the last 10 years. It's easy enough to maintain this property, so let's just do it. Fixes #2889. --- include/xwayland/xwm.h | 4 ++++ 1 file changed, 4 insertions(+) (limited to 'include/xwayland') diff --git a/include/xwayland/xwm.h b/include/xwayland/xwm.h index 05d229ae..d564a0e2 100644 --- a/include/xwayland/xwm.h +++ b/include/xwayland/xwm.h @@ -80,6 +80,7 @@ enum atom_name { DND_ACTION_ASK, DND_ACTION_PRIVATE, NET_CLIENT_LIST, + NET_CLIENT_LIST_STACKING, ATOM_LAST // keep last }; @@ -106,7 +107,10 @@ struct wlr_xwm { struct wlr_xwayland_surface *focus_surface; + // Surfaces in creation order struct wl_list surfaces; // wlr_xwayland_surface::link + // Surfaces in bottom-to-top stacking order, for _NET_CLIENT_LIST_STACKING + struct wl_list surfaces_in_stack_order; // wlr_xwayland_surface::stack_link struct wl_list unpaired_surfaces; // wlr_xwayland_surface::unpaired_link struct wlr_drag *drag; -- cgit v1.2.3