diff options
Diffstat (limited to 'src/wayland/meta-wayland-xdg-shell.c')
-rw-r--r-- | src/wayland/meta-wayland-xdg-shell.c | 14 |
1 files changed, 13 insertions, 1 deletions
diff --git a/src/wayland/meta-wayland-xdg-shell.c b/src/wayland/meta-wayland-xdg-shell.c index c750d3f66..145bec31f 100644 --- a/src/wayland/meta-wayland-xdg-shell.c +++ b/src/wayland/meta-wayland-xdg-shell.c @@ -643,7 +643,7 @@ meta_wayland_xdg_toplevel_commit (MetaWaylandSurfaceRole *surface_role, if (!pending->newly_attached) return; - if (pending->has_new_geometry) + if (pending->has_new_geometry || meta_window_wayland_needs_move_resize (window)) { window_geometry = meta_wayland_xdg_surface_get_window_geometry (xdg_surface); meta_window_wayland_move_resize (window, @@ -1278,8 +1278,20 @@ xdg_surface_set_window_geometry (struct wl_client *client, int32_t width, int32_t height) { + MetaWaylandXdgSurface *xdg_surface = wl_resource_get_user_data (resource); + MetaWaylandXdgSurfacePrivate *priv = + meta_wayland_xdg_surface_get_instance_private (xdg_surface); MetaWaylandSurface *surface = surface_from_xdg_surface_resource (resource); + if (priv->geometry.x == x && + priv->geometry.y == y && + priv->geometry.width == width && + priv->geometry.height == height) + { + surface->pending->has_new_geometry = FALSE; + return; + } + surface->pending->has_new_geometry = TRUE; surface->pending->new_geometry.x = x; surface->pending->new_geometry.y = y; |