diff options
author | Matthias Clasen <mclasen@redhat.com> | 2014-05-08 20:13:34 -0400 |
---|---|---|
committer | Matthias Clasen <mclasen@redhat.com> | 2014-05-10 22:04:25 -0400 |
commit | cda706b5227f6b5a803da7e03bda7c3ea62de2d6 (patch) | |
tree | ffc007f83f962b99adb52858b635d85f3b8bc27d /modules | |
parent | e249c6d6ee3ac2270947fe12b917bee9e583cbaa (diff) | |
download | gtk+-cda706b5227f6b5a803da7e03bda7c3ea62de2d6.tar.gz |
inspector: Don't show mapped/realized/visible in the tree
It does not really add much over the sensitive/insensitive rendering
that is already indicating which widget is mapped. At the same time,
set up signal handlers so we can update that when the widget changes.
Diffstat (limited to 'modules')
-rw-r--r-- | modules/inspector/widget-tree.c | 77 | ||||
-rw-r--r-- | modules/inspector/widget-tree.ui | 53 |
2 files changed, 61 insertions, 69 deletions
diff --git a/modules/inspector/widget-tree.c b/modules/inspector/widget-tree.c index f10085de43..880b4a19ca 100644 --- a/modules/inspector/widget-tree.c +++ b/modules/inspector/widget-tree.c @@ -31,9 +31,6 @@ enum OBJECT, OBJECT_TYPE, OBJECT_NAME, - WIDGET_REALIZED, - WIDGET_VISIBLE, - WIDGET_MAPPED, OBJECT_ADDRESS, SENSITIVE }; @@ -63,6 +60,29 @@ on_widget_selected (GtkTreeSelection *selection, g_signal_emit (wt, widget_tree_signals[WIDGET_CHANGED], 0); } +typedef struct +{ + GObject *object; + GtkTreeIter *iter; + gulong map_handler; + gulong unmap_handler; +} ObjectData; + +static void +object_data_free (gpointer data) +{ + ObjectData *od = data; + + gtk_tree_iter_free (od->iter); + + if (od->map_handler) + { + g_signal_handler_disconnect (od->object, od->map_handler); + g_signal_handler_disconnect (od->object, od->unmap_handler); + } + + g_free (od); +} static void gtk_inspector_widget_tree_init (GtkInspectorWidgetTree *wt) @@ -71,7 +91,7 @@ gtk_inspector_widget_tree_init (GtkInspectorWidgetTree *wt) wt->priv->iters = g_hash_table_new_full (g_direct_hash, g_direct_equal, NULL, - (GDestroyNotify) gtk_tree_iter_free); + (GDestroyNotify) object_data_free); gtk_widget_init_template (GTK_WIDGET (wt)); gtk_inspector_widget_tree_append_object (wt, G_OBJECT (gtk_settings_get_default ()), NULL, NULL); @@ -126,6 +146,19 @@ gtk_inspector_widget_tree_get_selected_object (GtkInspectorWidgetTree *wt) return NULL; } +static void +map_or_unmap (GtkWidget *widget, GtkInspectorWidgetTree *wt) +{ + GtkTreeIter iter; + + if (gtk_inspector_widget_tree_find_object (wt, G_OBJECT (widget), &iter)) + { + gtk_tree_store_set (wt->priv->model, &iter, + SENSITIVE, gtk_widget_get_mapped (widget), + -1); + } +} + typedef struct { GtkInspectorWidgetTree *wt; @@ -149,22 +182,17 @@ gtk_inspector_widget_tree_append_object (GtkInspectorWidgetTree *wt, GtkTreeIter iter; const gchar *class_name = G_OBJECT_CLASS_NAME (G_OBJECT_GET_CLASS (object)); gchar *address; - gboolean realized; gboolean mapped; - gboolean visible; - gboolean is_widget; + ObjectData *od; - realized = mapped = visible = FALSE; + mapped = FALSE; - is_widget = GTK_IS_WIDGET (object); - if (is_widget) + if (GTK_IS_WIDGET (object)) { GtkWidget *widget = GTK_WIDGET (object); if (name == NULL) name = gtk_widget_get_name (GTK_WIDGET (object)); - realized = gtk_widget_get_realized (widget); mapped = gtk_widget_get_mapped (widget); - visible = gtk_widget_get_visible (widget); } if (name == NULL || g_strcmp0 (name, class_name) == 0) @@ -186,13 +214,20 @@ gtk_inspector_widget_tree_append_object (GtkInspectorWidgetTree *wt, OBJECT, object, OBJECT_TYPE, class_name, OBJECT_NAME, name, - WIDGET_REALIZED, realized, - WIDGET_MAPPED, mapped, - WIDGET_VISIBLE, visible, OBJECT_ADDRESS, address, - SENSITIVE, !is_widget || (realized && mapped && visible), + SENSITIVE, !GTK_IS_WIDGET (object) || mapped, -1); - g_hash_table_insert (wt->priv->iters, object, gtk_tree_iter_copy (&iter)); + + od = g_new0 (ObjectData, 1); + od->object = object; + od->iter = gtk_tree_iter_copy (&iter); + if (GTK_IS_WIDGET (object)) + { + od->map_handler = g_signal_connect (object, "map", G_CALLBACK (map_or_unmap), wt); + od->unmap_handler = g_signal_connect (object, "unmap", G_CALLBACK (map_or_unmap), wt); + } + + g_hash_table_insert (wt->priv->iters, object, od); g_free (address); @@ -254,10 +289,12 @@ gtk_inspector_widget_tree_find_object (GtkInspectorWidgetTree *wt, GObject *object, GtkTreeIter *iter) { - GtkTreeIter *internal_iter = g_hash_table_lookup (wt->priv->iters, object); - if (internal_iter) + ObjectData *od; + + od = g_hash_table_lookup (wt->priv->iters, object); + if (od) { - *iter = *internal_iter; + *iter = *od->iter; return TRUE; } diff --git a/modules/inspector/widget-tree.ui b/modules/inspector/widget-tree.ui index fa5a949318..5b94e00de3 100644 --- a/modules/inspector/widget-tree.ui +++ b/modules/inspector/widget-tree.ui @@ -5,9 +5,6 @@ <column type="gpointer"/> <column type="gchararray"/> <column type="gchararray"/> - <column type="gboolean"/> - <column type="gboolean"/> - <column type="gboolean"/> <column type="gchararray"/> <column type="gboolean"/> </columns> @@ -31,7 +28,7 @@ </object> <attributes> <attribute name="text">1</attribute> - <attribute name="sensitive">7</attribute> + <attribute name="sensitive">4</attribute> </attributes> </child> </object> @@ -46,49 +43,7 @@ </object> <attributes> <attribute name="text">2</attribute> - <attribute name="sensitive">7</attribute> - </attributes> - </child> - </object> - </child> - <child> - <object class="GtkTreeViewColumn"> - <property name="title" translatable="yes">Realized</property> - <child> - <object class="GtkCellRendererToggle"> - <property name="activatable">True</property> - <property name="indicator-size">10</property> - </object> - <attributes> - <attribute name="active">3</attribute> - </attributes> - </child> - </object> - </child> - <child> - <object class="GtkTreeViewColumn"> - <property name="title" translatable="yes">Mapped</property> - <child> - <object class="GtkCellRendererToggle"> - <property name="activatable">True</property> - <property name="indicator-size">10</property> - </object> - <attributes> - <attribute name="active">4</attribute> - </attributes> - </child> - </object> - </child> - <child> - <object class="GtkTreeViewColumn"> - <property name="title" translatable="yes">Visible</property> - <child> - <object class="GtkCellRendererToggle"> - <property name="activatable">True</property> - <property name="indicator-size">10</property> - </object> - <attributes> - <attribute name="active">5</attribute> + <attribute name="sensitive">4</attribute> </attributes> </child> </object> @@ -103,8 +58,8 @@ <property name="family">monospace</property> </object> <attributes> - <attribute name="text">6</attribute> - <attribute name="sensitive">7</attribute> + <attribute name="text">3</attribute> + <attribute name="sensitive">4</attribute> </attributes> </child> </object> |