diff options
author | Matthias Clasen <mclasen@redhat.com> | 2015-07-23 21:28:28 -0400 |
---|---|---|
committer | Matthias Clasen <mclasen@redhat.com> | 2015-07-23 21:28:28 -0400 |
commit | 3fec234c223363b324d2e8e4b0dda3b51fdac217 (patch) | |
tree | 6bac5429a148131a450bf99b098b2dc1b5bd1e9c /gtk | |
parent | 9a44f189401cbdb8be4e6a606a3d32dbbce32766 (diff) | |
download | gtk+-3fec234c223363b324d2e8e4b0dda3b51fdac217.tar.gz |
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
Diffstat (limited to 'gtk')
-rw-r--r-- | gtk/gtkwindow.c | 19 |
1 files changed, 18 insertions, 1 deletions
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, |