From 187d2614005948f6380467d7130e7d11c226bec3 Mon Sep 17 00:00:00 2001 From: Matthias Clasen Date: Sat, 16 Jan 2021 15:17:08 -0500 Subject: [PATCH] wayland: Notify on surface changes When the width, height or scale of a surface changes, emit property change notification. --- gdk/wayland/gdksurface-wayland.c | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/gdk/wayland/gdksurface-wayland.c b/gdk/wayland/gdksurface-wayland.c index dd0d1891fa..c114c04f29 100644 --- a/gdk/wayland/gdksurface-wayland.c +++ b/gdk/wayland/gdksurface-wayland.c @@ -389,10 +389,13 @@ gdk_wayland_surface_update_size (GdkSurface *surface, int scale) { GdkWaylandSurface *impl = GDK_WAYLAND_SURFACE (surface); + gboolean width_changed, height_changed, scale_changed; - if ((surface->width == width) && - (surface->height == height) && - (impl->scale == scale)) + width_changed = surface->width != width; + height_changed = surface->height != height; + scale_changed = impl->scale != scale; + + if (!width_changed && !height_changed && !scale_changed) return; surface->width = width; @@ -405,6 +408,13 @@ gdk_wayland_surface_update_size (GdkSurface *surface, wl_surface_set_buffer_scale (impl->display_server.wl_surface, scale); gdk_surface_invalidate_rect (surface, NULL); + + if (width_changed) + g_object_notify (G_OBJECT (surface), "width"); + if (height_changed) + g_object_notify (G_OBJECT (surface), "height"); + if (scale_changed) + g_object_notify (G_OBJECT (surface), "scale-factor"); } static const char *