diff options
author | Tudor Brindus <me@tbrindus.ca> | 2021-05-02 12:50:36 -0400 |
---|---|---|
committer | Simon Ser <contact@emersion.fr> | 2021-05-31 10:41:29 +0200 |
commit | ae2f3ecb6824e168083580a601af53d6c9544b5d (patch) | |
tree | 53674408ed4a82b66b85e401d82319a3ca4208b8 /include/xwayland | |
parent | 699d7240001c4d991a265c23d9c020a36df5f70d (diff) |
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.
Diffstat (limited to 'include/xwayland')
-rw-r--r-- | include/xwayland/xwm.h | 4 |
1 files changed, 4 insertions, 0 deletions
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; |