libweston-desktop/xwayland: react to geometry changes

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 <pekka.paalanen@collabora.co.uk>
Reviewed-by: Louis-Francis Ratté-Boulianne <lfrb@collabora.com>
Acked-by: Daniel Stone <daniels@collabora.com>
This commit is contained in:
Pekka Paalanen 2017-01-18 15:37:59 +02:00 committed by Daniel Stone
parent 7ace831ca6
commit 5f93b9f640

View file

@ -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);