From 06575b00ed7c270b325d14e689452b056017c4f8 Mon Sep 17 00:00:00 2001 From: dawser Date: Mon, 27 Apr 2026 17:37:51 +0200 Subject: [PATCH] xdg_shell: handle_commit() could receive new geometry of size outside of the toplevel set boundaries (#9130) --- sway/desktop/xdg_shell.c | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/sway/desktop/xdg_shell.c b/sway/desktop/xdg_shell.c index 7217e1369..3519df823 100644 --- a/sway/desktop/xdg_shell.c +++ b/sway/desktop/xdg_shell.c @@ -311,6 +311,24 @@ static void handle_commit(struct wl_listener *listener, void *data) { } struct wlr_box *new_geo = &xdg_surface->geometry; + + if (view->wlr_xdg_toplevel->current.min_width > 0 && + new_geo->width < view->wlr_xdg_toplevel->current.min_width) { + new_geo->width = view->wlr_xdg_toplevel->current.min_width; + } + if (view->wlr_xdg_toplevel->current.min_height > 0 && + new_geo->height < view->wlr_xdg_toplevel->current.min_height) { + new_geo->height = view->wlr_xdg_toplevel->current.min_height; + } + if (view->wlr_xdg_toplevel->current.max_width > 0 && + new_geo->width > view->wlr_xdg_toplevel->current.max_width) { + new_geo->width = view->wlr_xdg_toplevel->current.max_width; + } + if (view->wlr_xdg_toplevel->current.max_height > 0 && + new_geo->height < view->wlr_xdg_toplevel->current.max_height) { + new_geo->height = view->wlr_xdg_toplevel->current.max_height; + } + bool new_size = new_geo->width != view->geometry.width || new_geo->height != view->geometry.height || new_geo->x != view->geometry.x ||