diff --git a/gtk/inspector/resource-list.c b/gtk/inspector/resource-list.c
index 44fb34c586..f036972122 100644
--- a/gtk/inspector/resource-list.c
+++ b/gtk/inspector/resource-list.c
@@ -46,6 +46,10 @@ struct _GtkInspectorResourceListPrivate
GtkWidget *count_label;
GtkWidget *size_label;
GtkWidget *info_grid;
+ GtkTreeViewColumn *count_column;
+ GtkCellRenderer *count_renderer;
+ GtkTreeViewColumn *size_column;
+ GtkCellRenderer *size_renderer;
};
G_DEFINE_TYPE_WITH_PRIVATE (GtkInspectorResourceList, gtk_inspector_resource_list, GTK_TYPE_BOX)
@@ -90,19 +94,21 @@ load_resources_recurse (GtkInspectorResourceList *sl,
if (has_slash)
{
load_resources_recurse (sl, &iter, p, &count, &size);
+ *count_out += count;
+ *size_out += size;
}
else
{
- count = 1;
+ count = 0;
g_resources_get_info (p, 0, &size, NULL, NULL);
+ *count_out += 1;
+ *size_out += size;
}
gtk_tree_store_set (sl->priv->model, &iter,
COLUMN_COUNT, count,
COLUMN_SIZE, size,
-1);
- *count_out += count;
- *size_out += size;
g_free (p);
}
@@ -225,11 +231,54 @@ load_resources (GtkInspectorResourceList *sl)
load_resources_recurse (sl, NULL, "/", &count, &size);
}
+static void
+count_data_func (GtkTreeViewColumn *col,
+ GtkCellRenderer *cell,
+ GtkTreeModel *model,
+ GtkTreeIter *iter,
+ gpointer data)
+{
+ gint count;
+ gchar *text;
+
+ gtk_tree_model_get (model, iter, COLUMN_COUNT, &count, -1);
+ if (count > 0)
+ {
+ text = g_strdup_printf ("%d", count);
+ g_object_set (cell, "text", text, NULL);
+ g_free (text);
+ }
+ else
+ g_object_set (cell, "text", "", NULL);
+}
+
+static void
+size_data_func (GtkTreeViewColumn *col,
+ GtkCellRenderer *cell,
+ GtkTreeModel *model,
+ GtkTreeIter *iter,
+ gpointer data)
+{
+ gint size;
+ gchar *text;
+
+ gtk_tree_model_get (model, iter, COLUMN_SIZE, &size, -1);
+ text = g_format_size (size);
+ g_object_set (cell, "text", text, NULL);
+ g_free (text);
+}
+
static void
gtk_inspector_resource_list_init (GtkInspectorResourceList *sl)
{
sl->priv = gtk_inspector_resource_list_get_instance_private (sl);
gtk_widget_init_template (GTK_WIDGET (sl));
+ gtk_tree_view_column_set_cell_data_func (sl->priv->count_column,
+ sl->priv->count_renderer,
+ count_data_func, sl, NULL);
+ gtk_tree_view_column_set_cell_data_func (sl->priv->size_column,
+ sl->priv->size_renderer,
+ size_data_func, sl, NULL);
load_resources (sl);
}
@@ -249,6 +298,10 @@ gtk_inspector_resource_list_class_init (GtkInspectorResourceListClass *klass)
gtk_widget_class_bind_template_child_private (widget_class, GtkInspectorResourceList, count);
gtk_widget_class_bind_template_child_private (widget_class, GtkInspectorResourceList, size_label);
gtk_widget_class_bind_template_child_private (widget_class, GtkInspectorResourceList, info_grid);
+ gtk_widget_class_bind_template_child_private (widget_class, GtkInspectorResourceList, count_column);
+ gtk_widget_class_bind_template_child_private (widget_class, GtkInspectorResourceList, count_renderer);
+ gtk_widget_class_bind_template_child_private (widget_class, GtkInspectorResourceList, size_column);
+ gtk_widget_class_bind_template_child_private (widget_class, GtkInspectorResourceList, size_renderer);
gtk_widget_class_bind_template_callback (widget_class, selection_changed);
}
diff --git a/gtk/inspector/resource-list.ui b/gtk/inspector/resource-list.ui
index d09334b1ca..f452e74b2b 100644
--- a/gtk/inspector/resource-list.ui
+++ b/gtk/inspector/resource-list.ui
@@ -33,6 +33,7 @@
+
+
+ Count
+ 1
+
+
+ 0.8
+
+
+
+
+
+
+ Size
+ 2
+
+
+ 0.8
+
+
+
+
diff --git a/gtk/inspector/resource-list.ui.h b/gtk/inspector/resource-list.ui.h
index e35930195b..4379194d3c 100644
--- a/gtk/inspector/resource-list.ui.h
+++ b/gtk/inspector/resource-list.ui.h
@@ -1,4 +1,6 @@
N_("Path");
+N_("Count");
+N_("Size");
N_("Type:");
N_("Count:");
N_("Size:");