diff options
author | Matthias Clasen <mclasen@redhat.com> | 2021-01-16 15:17:08 -0500 |
---|---|---|
committer | Matthias Clasen <mclasen@redhat.com> | 2021-01-16 15:22:46 -0500 |
commit | 187d2614005948f6380467d7130e7d11c226bec3 (patch) | |
tree | 7a14c02c8eecb487b3726a7e4214e754211ddfb6 | |
parent | e905f7ff7c0b5017a2776b3c9646eb181363a217 (diff) | |
download | gtk+-187d2614005948f6380467d7130e7d11c226bec3.tar.gz |
wayland: Notify on surface changes
When the width, height or scale of a surface changes,
emit property change notification.
-rw-r--r-- | gdk/wayland/gdksurface-wayland.c | 16 |
1 files 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 * |