summaryrefslogtreecommitdiff
path: root/modules
diff options
context:
space:
mode:
authorMatthias Clasen <mclasen@redhat.com>2014-05-13 14:43:19 -0400
committerMatthias Clasen <mclasen@redhat.com>2014-05-13 15:20:37 -0400
commit0ee35aa27b1631b23293242c41024c84dc7d7115 (patch)
treeb1ae5f203662d07be10ad9d648576cb01c56c981 /modules
parent069a2603efb942cd4314fca97d8235e03b657858 (diff)
downloadgtk+-0ee35aa27b1631b23293242c41024c84dc7d7115.tar.gz
inspector: Show text view subobjects in the tree
Diffstat (limited to 'modules')
-rw-r--r--modules/inspector/widget-tree.c50
1 files changed, 47 insertions, 3 deletions
diff --git a/modules/inspector/widget-tree.c b/modules/inspector/widget-tree.c
index 30553c381b..0244422ce5 100644
--- a/modules/inspector/widget-tree.c
+++ b/modules/inspector/widget-tree.c
@@ -190,10 +190,11 @@ typedef struct
} FindAllData;
static void
-on_container_forall (GtkWidget *widget,
- gpointer data)
+child_callback (GtkWidget *widget,
+ gpointer data)
{
FindAllData *d = data;
+
gtk_inspector_widget_tree_append_object (d->wt, G_OBJECT (widget), d->iter, NULL);
}
@@ -209,6 +210,18 @@ cell_callback (GtkCellRenderer *renderer,
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
gtk_inspector_widget_tree_append_object (GtkInspectorWidgetTree *wt,
GObject *object,
@@ -291,9 +304,13 @@ gtk_inspector_widget_tree_append_object (GtkInspectorWidgetTree *wt,
data.iter = &iter;
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))
{
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));
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