From 5f93b9f640b456de0406cc1be9685b3d768ce0c0 Mon Sep 17 00:00:00 2001 From: Pekka Paalanen Date: Wed, 18 Jan 2017 15:37:59 +0200 Subject: [PATCH] libweston-desktop/xwayland: react to geometry changes MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit Fix up the window position whenever the geometry info changes. If the window geometry changes, we want to keep the input-responding content anchored to top-left. It is done by manipulating the dx,dy arguments originating from a wl_surface.attach request. Signed-off-by: Pekka Paalanen Reviewed-by: Louis-Francis Ratté-Boulianne Acked-by: Daniel Stone --- libweston-desktop/xwayland.c | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/libweston-desktop/xwayland.c b/libweston-desktop/xwayland.c index b9843853..4f4b453f 100644 --- a/libweston-desktop/xwayland.c +++ b/libweston-desktop/xwayland.c @@ -131,12 +131,19 @@ weston_desktop_xwayland_surface_committed(struct weston_desktop_surface *dsurfac int32_t sx, int32_t sy) { struct weston_desktop_xwayland_surface *surface = user_data; + struct weston_geometry oldgeom; + + assert(dsurface == surface->surface); #ifdef WM_DEBUG weston_log("%s: xwayland surface %p\n", __func__, surface); #endif if (surface->has_next_geometry) { + oldgeom = weston_desktop_surface_get_geometry(surface->surface); + sx -= surface->next_geometry.x - oldgeom.x; + sy -= surface->next_geometry.y - oldgeom.x; + surface->has_next_geometry = false; weston_desktop_surface_set_geometry(surface->surface, surface->next_geometry); -- 2.34.1