[gtk+/parasite2] Make the inspector available via GTK_DEBUG



commit 40290ed18e261dbcdd3bf3a76b788791d02bd494
Author: Matthias Clasen <mclasen redhat com>
Date:   Sat May 10 13:22:17 2014 -0400

    Make the inspector available via GTK_DEBUG
    
    Change things around so GTK_DEBUG=interactive also brings
    up the inspector window.

 gtk/gtkdebug.h         |    3 ++-
 gtk/gtkmain.c          |   12 ++++++++++--
 gtk/gtkwindow.c        |   24 +++++++++++++++---------
 gtk/gtkwindowprivate.h |    2 ++
 4 files changed, 29 insertions(+), 12 deletions(-)
---
diff --git a/gtk/gtkdebug.h b/gtk/gtkdebug.h
index a91e6da..895520e 100644
--- a/gtk/gtkdebug.h
+++ b/gtk/gtkdebug.h
@@ -51,7 +51,8 @@ typedef enum {
   GTK_DEBUG_NO_CSS_CACHE    = 1 << 13,
   GTK_DEBUG_BASELINES       = 1 << 14,
   GTK_DEBUG_PIXEL_CACHE     = 1 << 15,
-  GTK_DEBUG_NO_PIXEL_CACHE  = 1 << 16
+  GTK_DEBUG_NO_PIXEL_CACHE  = 1 << 16,
+  GTK_DEBUG_INTERACTIVE     = 1 << 17
 } GtkDebugFlag;
 
 #ifdef G_ENABLE_DEBUG
diff --git a/gtk/gtkmain.c b/gtk/gtkmain.c
index 9e8fea5..0b187d5 100644
--- a/gtk/gtkmain.c
+++ b/gtk/gtkmain.c
@@ -175,7 +175,8 @@ static const GDebugKey gtk_debug_keys[] = {
   {"no-css-cache", GTK_DEBUG_NO_CSS_CACHE},
   {"baselines", GTK_DEBUG_BASELINES},
   {"pixel-cache", GTK_DEBUG_PIXEL_CACHE},
-  {"no-pixel-cache", GTK_DEBUG_NO_PIXEL_CACHE}
+  {"no-pixel-cache", GTK_DEBUG_NO_PIXEL_CACHE},
+  {"interactive", GTK_DEBUG_INTERACTIVE}
 };
 #endif /* G_ENABLE_DEBUG */
 
@@ -976,10 +977,17 @@ gboolean
 gtk_init_check (int    *argc,
                 char ***argv)
 {
+  gboolean ret;
+
   if (!gtk_parse_args (argc, argv))
     return FALSE;
 
-  return gdk_display_open_default_libgtk_only () != NULL;
+  ret = gdk_display_open_default_libgtk_only () != NULL;
+
+  if (debug_flags & GTK_DEBUG_INTERACTIVE)
+    gtk_window_set_interactive_debugging (TRUE);
+
+  return ret;
 }
 
 #ifdef G_PLATFORM_WIN32
diff --git a/gtk/gtkwindow.c b/gtk/gtkwindow.c
index cfe61fa..1fcfeba 100644
--- a/gtk/gtkwindow.c
+++ b/gtk/gtkwindow.c
@@ -12432,13 +12432,12 @@ _gtk_window_get_popover_position (GtkWindow             *window,
     *rect = data->rect;
 }
 
-static void
-gtk_window_toggle_debugging (GtkWindow *window)
+static GtkWidget *inspector_window = NULL;
+
+void
+gtk_window_set_interactive_debugging (gboolean enable)
 {
   static GType type = G_TYPE_NONE;
-  static GtkWidget *inspector_window = NULL;
-
-  g_debug ("toggle debugging");
 
   if (type == G_TYPE_NONE)
     {
@@ -12453,15 +12452,22 @@ gtk_window_toggle_debugging (GtkWindow *window)
 
   if (inspector_window == NULL)
     {
-      g_debug ("creating a GtkInspector window");
-
       inspector_window = GTK_WIDGET (g_object_new (type, NULL));
       g_signal_connect (inspector_window, "delete-event",
                         G_CALLBACK (gtk_widget_hide_on_delete), NULL);
     }
 
-  if (gtk_widget_is_visible (inspector_window))
+  if (enable)
+    gtk_window_present (GTK_WINDOW (inspector_window));
+  else
     gtk_widget_hide (inspector_window);
+}
+
+static void
+gtk_window_toggle_debugging (GtkWindow *window)
+{
+  if (GTK_IS_WIDGET (inspector_window) && gtk_widget_is_visible (inspector_window))
+    gtk_window_set_interactive_debugging (FALSE);
   else
-    gtk_window_present (GTK_WINDOW (inspector_window));
+    gtk_window_set_interactive_debugging (TRUE);
 }
diff --git a/gtk/gtkwindowprivate.h b/gtk/gtkwindowprivate.h
index 704026d..c4f191c 100644
--- a/gtk/gtkwindowprivate.h
+++ b/gtk/gtkwindowprivate.h
@@ -110,6 +110,8 @@ void    _gtk_window_get_popover_position (GtkWindow                   *window,
 GdkPixbuf *gtk_window_get_icon_for_size (GtkWindow *window,
                                          gint       size);
 
+void gtk_window_set_interactive_debugging (gboolean enable);
+
 G_END_DECLS
 
 #endif /* __GTK_WINDOW_PRIVATE_H__ */


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]