[gtk+] inspector: Update for screen config changes



commit 84ba01d713df386fb8b141a5c6c1fc393509a3ba
Author: Matthias Clasen <mclasen redhat com>
Date:   Thu Feb 25 01:21:27 2016 -0500

    inspector: Update for screen config changes
    
    Repopulate the display section whenever the monitor configuration
    changes.

 gtk/inspector/general.c |   33 ++++++++++++++++++++++++++++++---
 1 files changed, 30 insertions(+), 3 deletions(-)
---
diff --git a/gtk/inspector/general.c b/gtk/inspector/general.c
index 0f40990..c99ea38 100644
--- a/gtk/inspector/general.c
+++ b/gtk/inspector/general.c
@@ -274,13 +274,26 @@ init_env (GtkInspectorGeneral *gen)
 }
 
 static void
-init_display (GtkInspectorGeneral *gen)
+populate_display (GdkScreen *screen, GtkInspectorGeneral *gen)
 {
-  GdkScreen *screen;
   gchar *name;
   gint i;
+  GList *children, *l;
+  GtkWidget *child;
+
+  children = gtk_container_get_children (GTK_CONTAINER (gen->priv->x_box));
+  for (l = children; l; l = l->next)
+    {
+      child = l->data;
+      if (gtk_widget_is_ancestor (gen->priv->x_display, child) ||
+          gtk_widget_is_ancestor (gen->priv->x_rgba, child) ||
+          gtk_widget_is_ancestor (gen->priv->x_composited, child))
+        continue;
+
+      gtk_widget_destroy (child);
+    }
+  g_list_free (children);
 
-  screen = gdk_screen_get_default ();
   name = gdk_screen_make_display_name (screen);
   gtk_label_set_label (GTK_LABEL (gen->priv->x_display), name);
   g_free (name);
@@ -344,6 +357,20 @@ init_display (GtkInspectorGeneral *gen)
 }
 
 static void
+init_display (GtkInspectorGeneral *gen)
+{
+  GdkScreen *screen;
+
+  screen = gdk_screen_get_default ();
+
+  g_signal_connect (screen, "size-changed", G_CALLBACK (populate_display), gen);
+  g_signal_connect (screen, "composited-changed", G_CALLBACK (populate_display), gen);
+  g_signal_connect (screen, "monitors-changed", G_CALLBACK (populate_display), gen);
+
+  populate_display (screen, gen);
+}
+
+static void
 add_device (GtkInspectorGeneral *gen,
             GdkDevice           *device)
 {


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