[gtk/surface-scale: 3/4] wayland: Notify on surface changes




commit 187d2614005948f6380467d7130e7d11c226bec3
Author: Matthias Clasen <mclasen redhat com>
Date:   Sat Jan 16 15:17:08 2021 -0500

    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 *


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]