From 3fec234c223363b324d2e8e4b0dda3b51fdac217 Mon Sep 17 00:00:00 2001 From: Matthias Clasen Date: Thu, 23 Jul 2015 21:28:28 -0400 Subject: inspector: Rescan toplevels when they change This ensures that windows appear in the inspectors tree when they are created, and it prevents GTK_DEBUG=interactive from coming up with an empty object tree. https://bugzilla.gnome.org/show_bug.cgi?id=752664 --- gtk/gtkwindow.c | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) (limited to 'gtk/gtkwindow.c') diff --git a/gtk/gtkwindow.c b/gtk/gtkwindow.c index b77cd3152e..4b45a0dac6 100644 --- a/gtk/gtkwindow.c +++ b/gtk/gtkwindow.c @@ -571,6 +571,7 @@ static GtkWindowRegion get_active_region_type (GtkWindow *window, gint x, gint y); +static void gtk_window_update_debugging (void); G_DEFINE_TYPE_WITH_CODE (GtkWindow, gtk_window, GTK_TYPE_BIN, G_ADD_PRIVATE (GtkWindow) @@ -1645,6 +1646,7 @@ gtk_window_init (GtkWindow *window) g_object_ref_sink (window); priv->has_user_ref_count = TRUE; toplevel_list = g_slist_prepend (toplevel_list, window); + gtk_window_update_debugging (); if (priv->screen) g_signal_connect_object (priv->screen, "composited-changed", @@ -5679,6 +5681,7 @@ gtk_window_destroy (GtkWidget *widget) gtk_window_release_application (window); toplevel_list = g_slist_remove (toplevel_list, window); + gtk_window_update_debugging (); if (priv->transient_parent) gtk_window_set_transient_for (window, NULL); @@ -11512,9 +11515,9 @@ _gtk_window_set_is_toplevel (GtkWindow *window, { _gtk_widget_set_is_toplevel (widget, FALSE); toplevel_list = g_slist_remove (toplevel_list, window); - _gtk_widget_propagate_hierarchy_changed (widget, widget); } + gtk_window_update_debugging (); } /** @@ -11987,6 +11990,20 @@ warn_response (GtkDialog *dialog, } } +static gboolean +update_debugging (gpointer data) +{ + gtk_inspector_window_rescan (inspector_window); + return G_SOURCE_REMOVE; +} + +static void +gtk_window_update_debugging (void) +{ + if (inspector_window) + g_idle_add (update_debugging, NULL); +} + static void gtk_window_set_debugging (gboolean enable, gboolean select, -- cgit v1.2.1