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)
|
int32_t sx, int32_t sy)
|
||||||
{
|
{
|
||||||
struct weston_desktop_xwayland_surface *surface = user_data;
|
struct weston_desktop_xwayland_surface *surface = user_data;
|
||||||
|
struct weston_geometry oldgeom;
|
||||||
|
|
||||||
|
assert(dsurface == surface->surface);
|
||||||
|
|
||||||
#ifdef WM_DEBUG
|
#ifdef WM_DEBUG
|
||||||
weston_log("%s: xwayland surface %p\n", __func__, surface);
|
weston_log("%s: xwayland surface %p\n", __func__, surface);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
if (surface->has_next_geometry) {
|
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;
|
surface->has_next_geometry = false;
|
||||||
weston_desktop_surface_set_geometry(surface->surface,
|
weston_desktop_surface_set_geometry(surface->surface,
|
||||||
surface->next_geometry);
|
surface->next_geometry);
|
||||||
|
Loading…
Reference in New Issue
Block a user