summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMatthias Clasen <mclasen@redhat.com>2018-07-15 00:35:54 -0400
committerMatthias Clasen <mclasen@redhat.com>2018-07-15 00:53:37 -0400
commit028c5dcf98b2e33a259f4c8a242bc9294cfff1de (patch)
treee02122759edb752966395bd2fbfa8ba59814decd
parent286b27e55fd78f23d1004c65f99f41bf78e01c60 (diff)
downloadgtk+-028c5dcf98b2e33a259f4c8a242bc9294cfff1de.tar.gz
Stop using configure events
Listen to changes of ::width and ::height properties instead.
-rw-r--r--gtk/gtkmain.c9
-rw-r--r--gtk/gtkwindow.c16
2 files changed, 17 insertions, 8 deletions
diff --git a/gtk/gtkmain.c b/gtk/gtkmain.c
index 56ab6167d1..7f4ff811f7 100644
--- a/gtk/gtkmain.c
+++ b/gtk/gtkmain.c
@@ -1847,15 +1847,8 @@ gtk_main_do_event (GdkEvent *event)
break;
case GDK_CONFIGURE:
- if (GTK_IS_WINDOW (event_widget) &&
- _gtk_widget_get_surface (event_widget) == event->any.surface)
- {
- gtk_window_configure (GTK_WINDOW (event_widget),
- event->configure.width,
- event->configure.height);
- }
-
break;
+
case GDK_FOCUS_CHANGE:
case GDK_UNMAP:
case GDK_GRAB_BROKEN:
diff --git a/gtk/gtkwindow.c b/gtk/gtkwindow.c
index 9f495c12ab..7c0569dec9 100644
--- a/gtk/gtkwindow.c
+++ b/gtk/gtkwindow.c
@@ -432,6 +432,7 @@ static gboolean gtk_window_close_request (GtkWindow *window);
static void gtk_window_focus_in (GtkWidget *widget);
static void gtk_window_focus_out (GtkWidget *widget);
static void surface_state_changed (GtkWidget *widget);
+static void surface_size_changed (GtkWidget *widget);
static void gtk_window_remove (GtkContainer *container,
GtkWidget *widget);
static void gtk_window_check_resize (GtkContainer *container);
@@ -6869,6 +6870,8 @@ gtk_window_realize (GtkWidget *widget)
gtk_widget_set_surface (widget, surface);
g_signal_connect_swapped (surface, "notify::state", G_CALLBACK (surface_state_changed), widget);
+ g_signal_connect_swapped (surface, "notify::width", G_CALLBACK (surface_size_changed), widget);
+ g_signal_connect_swapped (surface, "notify::height", G_CALLBACK (surface_size_changed), widget);
gtk_widget_register_surface (widget, surface);
GTK_WIDGET_CLASS (gtk_window_parent_class)->realize (widget);
@@ -7007,6 +7010,9 @@ gtk_window_unrealize (GtkWidget *widget)
g_signal_handlers_disconnect_by_func (_gtk_widget_get_surface (widget),
G_CALLBACK (surface_state_changed),
widget);
+ g_signal_handlers_disconnect_by_func (_gtk_widget_get_surface (widget),
+ G_CALLBACK (surface_size_changed),
+ widget);
GTK_WIDGET_CLASS (gtk_window_parent_class)->unrealize (widget);
@@ -7320,6 +7326,16 @@ surface_state_changed (GtkWidget *widget)
}
}
+static void
+surface_size_changed (GtkWidget *widget)
+{
+ GdkSurface *surface = _gtk_widget_get_surface (widget);
+
+ gtk_window_configure (GTK_WINDOW (widget),
+ gdk_surface_get_width (surface),
+ gdk_surface_get_height (surface));
+}
+
/* the accel_key and accel_mods fields of the key have to be setup
* upon calling this function. it’ll then return whether that key
* is at all used as accelerator, and if so will OR in the