diff options
author | Matthias Clasen <mclasen@redhat.com> | 2014-05-09 22:28:45 -0400 |
---|---|---|
committer | Matthias Clasen <mclasen@redhat.com> | 2014-05-10 22:04:28 -0400 |
commit | 2af94dff1c6e49bc49b7e25d2128138859e2e0bd (patch) | |
tree | bd7c71d32cada32e85f27b7bef2a20d1f7438acc /modules | |
parent | 9467c56b9490af4e4c978a0d4c7ece1295931af2 (diff) | |
download | gtk+-2af94dff1c6e49bc49b7e25d2128138859e2e0bd.tar.gz |
inspector: Add cell areas into the tree
Diffstat (limited to 'modules')
-rw-r--r-- | modules/inspector/widget-tree.c | 37 |
1 files changed, 26 insertions, 11 deletions
diff --git a/modules/inspector/widget-tree.c b/modules/inspector/widget-tree.c index 4b63cb838a..8518740a4d 100644 --- a/modules/inspector/widget-tree.c +++ b/modules/inspector/widget-tree.c @@ -186,6 +186,7 @@ typedef struct { GtkInspectorWidgetTree *wt; GtkTreeIter *iter; + GObject *parent; } FindAllData; static void @@ -196,6 +197,18 @@ on_container_forall (GtkWidget *widget, gtk_inspector_widget_tree_append_object (d->wt, G_OBJECT (widget), d->iter, NULL); } +static gboolean +cell_callback (GtkCellRenderer *renderer, + gpointer data) +{ + FindAllData *d = data; + + g_object_set_data (G_OBJECT (renderer), "gtk-inspector-cell-area", d->parent); + gtk_inspector_widget_tree_append_object (d->wt, G_OBJECT (renderer), d->iter, NULL); + + return FALSE; +} + void gtk_inspector_widget_tree_append_object (GtkInspectorWidgetTree *wt, GObject *object, @@ -276,6 +289,7 @@ gtk_inspector_widget_tree_append_object (GtkInspectorWidgetTree *wt, data.wt = wt; data.iter = &iter; + data.parent = object; gtk_container_forall (GTK_CONTAINER (object), on_container_forall, &data); } @@ -293,21 +307,22 @@ gtk_inspector_widget_tree_append_object (GtkInspectorWidgetTree *wt, } } - if (GTK_IS_CELL_LAYOUT (object)) + if (GTK_IS_CELL_AREA (object)) + { + FindAllData data; + + data.wt = wt; + data.iter = &iter; + data.parent = object; + + gtk_cell_area_foreach (GTK_CELL_AREA (object), cell_callback, &data); + } + else if (GTK_IS_CELL_LAYOUT (object)) { - GList *cells, *l; - GObject *cell; GtkCellArea *area; area = gtk_cell_layout_get_area (GTK_CELL_LAYOUT (object)); - cells = gtk_cell_layout_get_cells (GTK_CELL_LAYOUT (object)); - for (l = cells; l; l = l->next) - { - cell = l->data; - g_object_set_data (cell, "gtk-inspector-cell-area", area); - gtk_inspector_widget_tree_append_object (wt, cell, &iter, NULL); - } - g_list_free (cells); + gtk_inspector_widget_tree_append_object (wt, G_OBJECT (area), &iter, NULL); } } |