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:
parent
7ace831ca6
commit
5f93b9f640
@ -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);
|
||||
|
Loading…
Reference in New Issue
Block a user