inspector: Show text view subobjects in the tree

This commit is contained in:
Matthias Clasen 2014-05-13 14:43:19 -04:00
parent 069a2603ef
commit 0ee35aa27b

View File

@ -190,10 +190,11 @@ typedef struct
} FindAllData; } FindAllData;
static void static void
on_container_forall (GtkWidget *widget, child_callback (GtkWidget *widget,
gpointer data) gpointer data)
{ {
FindAllData *d = data; FindAllData *d = data;
gtk_inspector_widget_tree_append_object (d->wt, G_OBJECT (widget), d->iter, NULL); gtk_inspector_widget_tree_append_object (d->wt, G_OBJECT (widget), d->iter, NULL);
} }
@ -209,6 +210,18 @@ cell_callback (GtkCellRenderer *renderer,
return FALSE; return FALSE;
} }
static void
tag_callback (GtkTextTag *tag,
gpointer data)
{
FindAllData *d = data;
gchar *name;
g_object_get (tag, "name", &name, NULL);
gtk_inspector_widget_tree_append_object (d->wt, G_OBJECT (tag), d->iter, name);
g_free (name);
}
void void
gtk_inspector_widget_tree_append_object (GtkInspectorWidgetTree *wt, gtk_inspector_widget_tree_append_object (GtkInspectorWidgetTree *wt,
GObject *object, GObject *object,
@ -291,9 +304,13 @@ gtk_inspector_widget_tree_append_object (GtkInspectorWidgetTree *wt,
data.iter = &iter; data.iter = &iter;
data.parent = object; data.parent = object;
gtk_container_forall (GTK_CONTAINER (object), on_container_forall, &data); gtk_container_forall (GTK_CONTAINER (object), child_callback, &data);
} }
/* Below are special cases for dependent objects which are not
* children in the GtkContainer sense, but which we still want
* to show in the tree right away.
*/
if (GTK_IS_TREE_VIEW (object)) if (GTK_IS_TREE_VIEW (object))
{ {
gint n_columns, i; gint n_columns, i;
@ -346,6 +363,33 @@ gtk_inspector_widget_tree_append_object (GtkInspectorWidgetTree *wt,
area = gtk_cell_layout_get_area (GTK_CELL_LAYOUT (object)); area = gtk_cell_layout_get_area (GTK_CELL_LAYOUT (object));
gtk_inspector_widget_tree_append_object (wt, G_OBJECT (area), &iter, "cell-area"); gtk_inspector_widget_tree_append_object (wt, G_OBJECT (area), &iter, "cell-area");
} }
if (GTK_IS_TEXT_VIEW (object))
{
GtkTextBuffer *buffer;
buffer = gtk_text_view_get_buffer (GTK_TEXT_VIEW (object));
gtk_inspector_widget_tree_append_object (wt, G_OBJECT (buffer), &iter, "buffer");
}
if (GTK_IS_TEXT_BUFFER (object))
{
GtkTextTagTable *tags;
tags = gtk_text_buffer_get_tag_table (GTK_TEXT_BUFFER (object));
gtk_inspector_widget_tree_append_object (wt, G_OBJECT (tags), &iter, "tag-table");
}
if (GTK_IS_TEXT_TAG_TABLE (object))
{
FindAllData data;
data.wt = wt;
data.iter = &iter;
data.parent = object;
gtk_text_tag_table_foreach (GTK_TEXT_TAG_TABLE (object), tag_callback, &data);
}
} }
void void