summaryrefslogtreecommitdiff
path: root/src/wayland/meta-wayland-xdg-shell.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/wayland/meta-wayland-xdg-shell.c')
-rw-r--r--src/wayland/meta-wayland-xdg-shell.c14
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;