diff options
author | Søren Sandmann Pedersen <sandmann@daimi.au.dk> | 2010-11-10 01:34:24 -0500 |
---|---|---|
committer | Søren Sandmann Pedersen <sandmann@daimi.au.dk> | 2011-06-29 02:48:21 -0400 |
commit | 4014a8c01b9d68a5d87fde95c835e067f1727cd6 (patch) | |
tree | 3eb032fbb25586bcafa1e4b2fe8cd978fec21657 | |
parent | 6b3611854a3d598ff5e191ed5b57bd13b4793025 (diff) |
Descendants line
-rw-r--r-- | sysprof.c | 44 | ||||
-rw-r--r-- | treeviewutils.c | 9 |
2 files changed, 35 insertions, 18 deletions
@@ -415,9 +415,21 @@ get_current_object (Application *app) } static void +set_row (FooTreeStore *store, GtkTreeIter *iter, + const char *name, double self, double total) +{ + foo_tree_store_set (store, iter, + DESCENDANTS_NAME, name, + DESCENDANTS_SELF, self, + DESCENDANTS_CUMULATIVE, total, + DESCENDANTS_OBJECT, name, + -1); +} + +static void add_node (FooTreeStore *store, int size, - const GtkTreeIter *parent, + GtkTreeIter *parent, ProfileDescendant *node) { GtkTreeIter iter; @@ -427,17 +439,17 @@ add_node (FooTreeStore *store, foo_tree_store_insert (store, &iter, (GtkTreeIter *)parent, 0); - foo_tree_store_set (store, &iter, - DESCENDANTS_NAME, node->name, - DESCENDANTS_SELF, 100 * (node->self)/(double)size, - DESCENDANTS_CUMULATIVE, 100 * (node->cumulative)/(double)size, -#if 0 - DESCENDANTS_SELF, (double)node->self, - DESCENDANTS_CUMULATIVE, (double)node->non_recursion, -#endif - DESCENDANTS_OBJECT, node->name, - -1); + set_row (store, &iter, node->name, + 100 * (node->self)/(double)size, + 100 * (node->cumulative)/(double)size); + if (parent == NULL) + { + foo_tree_store_insert (store, &iter, &iter, 0); + + set_row (store, &iter, "<i>Descendants</i>", 1.0, 1.0); + } + add_node (store, size, parent, node->siblings); add_node (store, size, &iter, node->children); } @@ -467,6 +479,7 @@ fill_descendants_tree (Application *app) { ProfileDescendant *node = profile_create_descendants (app->profile, object->name); + add_node (tree_store, profile_get_size (app->profile), NULL, node); } @@ -495,8 +508,8 @@ add_callers (GtkListStore *list_store, gtk_list_store_set ( list_store, &iter, CALLERS_NAME, "", - CALLERS_SELF, 0.0, - CALLERS_TOTAL, 0.0, -1); + CALLERS_SELF, -1.0, + CALLERS_TOTAL, -1.0, -1); } while (callers) @@ -896,9 +909,10 @@ expand_descendants_tree (Application *app, gpointer object) GtkTreePath *first_path; GList *list; - gtk_tree_view_collapse_all (app->descendants_view); + if (!(first_path = find_object (model, object))) + return; - first_path = find_object (model, object); + gtk_tree_view_collapse_all (app->descendants_view); gtk_tree_view_set_cursor (app->descendants_view, first_path, NULL, FALSE); diff --git a/treeviewutils.c b/treeviewutils.c index a73de20..3d66ba9 100644 --- a/treeviewutils.c +++ b/treeviewutils.c @@ -148,7 +148,7 @@ add_plain_text_column (GtkTreeView *view, const gchar *title, gint model_column) g_object_set (renderer, "xpad", PADDING, NULL); #endif column = gtk_tree_view_column_new_with_attributes (title, renderer, - "text", model_column, + "markup", model_column, NULL); gtk_tree_view_column_set_resizable (column, TRUE); gtk_tree_view_append_column (view, column); @@ -188,8 +188,11 @@ double_to_text (GtkTreeViewColumn *tree_column, ColumnInfo *info = data; gtk_tree_model_get (tree_model, iter, info->column, &d, -1); - - text = g_strdup_printf (info->format, d); + + if (d < 0) + text = g_strdup (""); + else + text = g_strdup_printf (info->format, d); g_object_set (cell, "markup", text, NULL); g_free (text); |