diff options
author | Matthias Clasen <mclasen@redhat.com> | 2020-08-07 16:54:09 -0400 |
---|---|---|
committer | Matthias Clasen <mclasen@redhat.com> | 2020-08-08 15:22:03 -0400 |
commit | 89a15f6d03fd465a5ff12ff33157c0e480f80920 (patch) | |
tree | b9fb5bf198eb2ddfce4947fe9b6557f983fd60ba | |
parent | 16a71975869a1c1c61a081e8fbdd629c952c520c (diff) | |
download | gtk+-89a15f6d03fd465a5ff12ff33157c0e480f80920.tar.gz |
wayland: Don't emit premature configure events
We should not emit configure events before we
are realized - size changes at this point are
not relevant.
This gets rid of a mysterious emission of
GdkSurface::size-changed (52, 52), that is happening
when GtkWindow sets the shadow_width before the window
is mapped.
-rw-r--r-- | gdk/wayland/gdksurface-wayland.c | 38 |
1 files changed, 20 insertions, 18 deletions
diff --git a/gdk/wayland/gdksurface-wayland.c b/gdk/wayland/gdksurface-wayland.c index 46dd4a3284..742b992b2b 100644 --- a/gdk/wayland/gdksurface-wayland.c +++ b/gdk/wayland/gdksurface-wayland.c @@ -901,24 +901,6 @@ gdk_wayland_surface_finalize (GObject *object) G_OBJECT_CLASS (gdk_wayland_surface_parent_class)->finalize (object); } -static void -gdk_wayland_surface_resize (GdkSurface *surface, - int width, - int height, - int scale) -{ - GdkDisplay *display; - GdkEvent *event; - - event = gdk_configure_event_new (surface, width, height); - - gdk_wayland_surface_update_size (surface, width, height, scale); - _gdk_surface_update_size (surface); - - display = gdk_surface_get_display (surface); - _gdk_wayland_display_deliver_event (display, event); -} - static gboolean is_realized_shell_surface (GdkSurface *surface) { @@ -946,6 +928,26 @@ is_realized_popup (GdkSurface *surface) impl->display_server.zxdg_popup_v6); } +static void +gdk_wayland_surface_resize (GdkSurface *surface, + int width, + int height, + int scale) +{ + gdk_wayland_surface_update_size (surface, width, height, scale); + _gdk_surface_update_size (surface); + + if (is_realized_shell_surface (surface)) + { + GdkDisplay *display; + GdkEvent *event; + + event = gdk_configure_event_new (surface, width, height); + display = gdk_surface_get_display (surface); + _gdk_wayland_display_deliver_event (display, event); + } +} + static void gdk_wayland_surface_show (GdkSurface *surface, gboolean already_mapped); static void gdk_wayland_surface_hide (GdkSurface *surface); |