commit f2425b4fd64314394aa962cee12b617fb7e5b10f
parent 647521244a99f7dbda8fa7c21d7eee781692dc22
Author: Kirill Primak <vyivel@eclair.cafe>
Date: Sun, 29 Oct 2023 18:59:25 +0300
xdg-shell: send maximized if tiled isn't supported
wlroots doesn't do it automatically anymore.
Diffstat:
1 file changed, 12 insertions(+), 5 deletions(-)
diff --git a/sway/desktop/xdg_shell.c b/sway/desktop/xdg_shell.c
@@ -169,12 +169,19 @@ static void set_tiled(struct sway_view *view, bool tiled) {
if (xdg_shell_view_from_view(view) == NULL) {
return;
}
- enum wlr_edges edges = WLR_EDGE_NONE;
- if (tiled) {
- edges = WLR_EDGE_LEFT | WLR_EDGE_RIGHT | WLR_EDGE_TOP |
- WLR_EDGE_BOTTOM;
+ if (wl_resource_get_version(view->wlr_xdg_toplevel->resource) >=
+ XDG_TOPLEVEL_STATE_TILED_LEFT_SINCE_VERSION) {
+ enum wlr_edges edges = WLR_EDGE_NONE;
+ if (tiled) {
+ edges = WLR_EDGE_LEFT | WLR_EDGE_RIGHT | WLR_EDGE_TOP |
+ WLR_EDGE_BOTTOM;
+ }
+ wlr_xdg_toplevel_set_tiled(view->wlr_xdg_toplevel, edges);
+ } else {
+ // The version is too low for the tiled state; configure as maximized instead
+ // to stop the client from drawing decorations outside of the toplevel geometry.
+ wlr_xdg_toplevel_set_maximized(view->wlr_xdg_toplevel, tiled);
}
- wlr_xdg_toplevel_set_tiled(view->wlr_xdg_toplevel, edges);
}
static void set_fullscreen(struct sway_view *view, bool fullscreen) {