From 5a2df573635ceb2d414e03653ef9979992a0fcd6 Mon Sep 17 00:00:00 2001 From: John Lindgren Date: Fri, 17 Feb 2023 14:08:27 -0500 Subject: [PATCH] xwayland: prevent overriding maximized/fullscreen/tiled geometry Fixes an issue where some XWayland views (example: xfce4-terminal) do not end up with exactly the correct geometry when tiled. --- src/xwayland.c | 21 +++++++++++++++------ 1 file changed, 15 insertions(+), 6 deletions(-) diff --git a/src/xwayland.c b/src/xwayland.c index 0753f1de..e92ad87b 100644 --- a/src/xwayland.c +++ b/src/xwayland.c @@ -319,12 +319,21 @@ handle_request_configure(struct wl_listener *listener, void *data) struct view *view = &xwayland_view->base; struct wlr_xwayland_surface_configure_event *event = data; - int width = event->width; - int height = event->height; - view_adjust_size(view, &width, &height); - - xwayland_view_configure(view, - (struct wlr_box){event->x, event->y, width, height}); + if (view_is_floating(view)) { + /* Honor client configure requests for floating views */ + struct wlr_box box = {.x = event->x, .y = event->y, + .width = event->width, .height = event->height}; + view_adjust_size(view, &box.width, &box.height); + xwayland_view_configure(view, box); + } else { + /* + * Do not allow clients to request geometry other than + * what we computed for maximized/fullscreen/tiled + * views. Ignore the client request and send back a + * ConfigureNotify event with the computed geometry. + */ + xwayland_view_configure(view, view->pending); + } } static void