[sysprof/newui: 13/24] Expand on double-click
- From: SÃren Sandmann Pedersen <ssp src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [sysprof/newui: 13/24] Expand on double-click
- Date: Wed, 29 Jun 2011 06:38:58 +0000 (UTC)
commit ee916d31b93ecd0cbd3d20276c429bd99003bcd8
Author: SÃren Sandmann Pedersen <sandmann daimi au dk>
Date: Tue Nov 9 10:25:55 2010 -0500
Expand on double-click
stackstash.c | 2 +
sysprof.c | 73 ++++++++++++++++++++++++++++++++++++++++++---------------
2 files changed, 56 insertions(+), 19 deletions(-)
---
diff --git a/stackstash.c b/stackstash.c
index 44912e4..4496110 100644
--- a/stackstash.c
+++ b/stackstash.c
@@ -226,6 +226,8 @@ stack_stash_add_trace (StackStash *stash,
*
* Not sure what can be done about it aside from actually fixing
* x86-64 to get stacktraces.
+ *
+ * Actually, using a hash table here might work.
*/
prev = NULL;
for (match = *location; match; prev = match, match = match->siblings)
diff --git a/sysprof.c b/sysprof.c
index 5cdb29e..a76b255 100644
--- a/sysprof.c
+++ b/sysprof.c
@@ -379,9 +379,9 @@ on_start_toggled (GtkWidget *widget, gpointer data)
enum
{
- CALLERS_NAME,
CALLERS_SELF,
CALLERS_TOTAL,
+ CALLERS_NAME,
CALLERS_OBJECT
};
@@ -539,9 +539,9 @@ fill_callers_list (Application *app)
list_store =
gtk_list_store_new (4,
- G_TYPE_STRING,
G_TYPE_DOUBLE,
G_TYPE_DOUBLE,
+ G_TYPE_STRING,
G_TYPE_POINTER);
if (app->profile)
@@ -848,8 +848,44 @@ on_delete (GtkWidget *window,
gtk_main_quit ();
}
+static GtkTreePath *
+find_object (GtkTreeModel *model, gpointer object)
+{
+ GtkTreeIter iter;
+ gboolean found = FALSE;
+
+ if (gtk_tree_model_get_iter_first (model, &iter))
+ {
+ do
+ {
+ char *list_object;
+
+ gtk_tree_model_get (model, &iter,
+ DESCENDANTS_OBJECT, &list_object,
+ -1);
+
+ if (list_object == object)
+ {
+ found = TRUE;
+ break;
+ }
+ }
+ while (gtk_tree_model_iter_next (model, &iter));
+ }
+
+ if (found)
+ {
+ GtkTreePath *path =
+ gtk_tree_model_get_path (model, &iter);
+
+ return path;
+ }
+
+ return NULL;
+}
+
static void
-expand_descendants_tree (Application *app)
+expand_descendants_tree (Application *app, gpointer object)
{
GtkTreeModel *model = gtk_tree_view_get_model (app->descendants_view);
GtkTreeIter iter;
@@ -860,8 +896,16 @@ expand_descendants_tree (Application *app)
GtkTreePath *first_path;
GList *list;
- first_path = gtk_tree_path_new_first();
+ gtk_tree_view_collapse_all (app->descendants_view);
+
+ first_path = find_object (model, object);
+ gtk_tree_view_set_cursor (app->descendants_view, first_path,
+ NULL, FALSE);
+
+ gtk_tree_view_scroll_to_cell (app->descendants_view, first_path, NULL,
+ FALSE, 0, 0);
+
all_paths = g_list_prepend (all_paths, first_path);
n_rows = 1;
@@ -1133,17 +1177,6 @@ on_object_selection_changed (GtkTreeSelection *selection,
fill_callers_list (app);
gtk_tree_view_columns_autosize (app->callers_view);
-
- gtk_widget_set_size_request (app->callers_view, 2, 2);
- gtk_widget_hide (app->callers_view);
- gtk_widget_show (app->callers_view);
-
- gtk_widget_set_size_request (app->callers_view, -1, -1);
-
-#if 0
- if (get_current_object (app))
- expand_descendants_tree (app);
-#endif
}
#if 0
@@ -1216,12 +1249,16 @@ on_descendants_row_activated (GtkTreeView *tree_view,
gpointer data)
{
Application *app = data;
+ gpointer object;
#if 0
goto_object (app, tree_view, path, DESCENDANTS_OBJECT);
#endif
gtk_widget_grab_focus (GTK_WIDGET (app->descendants_view));
+
+ if ((object = get_current_object (app)))
+ expand_descendants_tree (app, object);
}
static void
@@ -1484,13 +1521,12 @@ build_gui (Application *app)
/* callers view */
gtk_tree_view_set_enable_search (app->callers_view, FALSE);
- col = add_plain_text_column (app->callers_view, _("Callers"),
- CALLERS_NAME);
add_double_format_column (app->callers_view, _("Self"),
CALLERS_SELF, PCT_FORMAT);
add_double_format_column (app->callers_view, _("Total"),
CALLERS_TOTAL, PCT_FORMAT);
- gtk_tree_view_column_set_expand (col, TRUE);
+ add_plain_text_column (app->callers_view, _("Callers"),
+ CALLERS_NAME);
/* descendants view */
gtk_tree_view_set_enable_search (app->descendants_view, FALSE);
@@ -1500,7 +1536,6 @@ build_gui (Application *app)
DESCENDANTS_CUMULATIVE, PCT_FORMAT);
col = add_plain_text_column (app->descendants_view, _("Name"),
DESCENDANTS_NAME);
- gtk_tree_view_column_set_expand (col, TRUE);
gtk_tree_view_set_expander_column (app->descendants_view, col);
app->object_selection = gtk_tree_view_get_selection (app->descendants_view);
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]