[gtk/simple-resizing-fixes: 1/4] wayland: Don't emit premature configure events
- From: Matthias Clasen <matthiasc src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gtk/simple-resizing-fixes: 1/4] wayland: Don't emit premature configure events
- Date: Tue, 6 Oct 2020 00:25:21 +0000 (UTC)
commit d51608a2c9fbab4b9e82b851130fa050c91a5a45
Author: Matthias Clasen <mclasen redhat com>
Date: Fri Aug 7 16:54:09 2020 -0400
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
with a size of 52x52, that is happening when GtkWindow sets the
shadow_width before the window is mapped.
gdk/wayland/gdksurface-wayland.c | 38 ++++++++++++++++++++------------------
1 file changed, 20 insertions(+), 18 deletions(-)
---
diff --git a/gdk/wayland/gdksurface-wayland.c b/gdk/wayland/gdksurface-wayland.c
index e05fdc4b63..ccc4fa67ef 100644
--- a/gdk/wayland/gdksurface-wayland.c
+++ b/gdk/wayland/gdksurface-wayland.c
@@ -881,24 +881,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 (GdkWaylandSurface *impl)
{
@@ -920,6 +902,26 @@ is_realized_popup (GdkWaylandSurface *impl)
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 (GDK_WAYLAND_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);
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]