summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMatthias Clasen <mclasen@redhat.com>2021-01-16 15:17:08 -0500
committerMatthias Clasen <mclasen@redhat.com>2021-01-16 15:22:46 -0500
commit187d2614005948f6380467d7130e7d11c226bec3 (patch)
tree7a14c02c8eecb487b3726a7e4214e754211ddfb6
parente905f7ff7c0b5017a2776b3c9646eb181363a217 (diff)
downloadgtk+-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.c16
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 *