summaryrefslogtreecommitdiff
path: root/modules
diff options
context:
space:
mode:
authorMatthias Clasen <mclasen@redhat.com>2014-05-09 22:28:45 -0400
committerMatthias Clasen <mclasen@redhat.com>2014-05-10 22:04:28 -0400
commit2af94dff1c6e49bc49b7e25d2128138859e2e0bd (patch)
treebd7c71d32cada32e85f27b7bef2a20d1f7438acc /modules
parent9467c56b9490af4e4c978a0d4c7ece1295931af2 (diff)
downloadgtk+-2af94dff1c6e49bc49b7e25d2128138859e2e0bd.tar.gz
inspector: Add cell areas into the tree
Diffstat (limited to 'modules')
-rw-r--r--modules/inspector/widget-tree.c37
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);
}
}