From cf09cc6e3cc4d8ccde399348fbbe4adb912c1ba0 Mon Sep 17 00:00:00 2001 From: Steven Rostedt Date: Thu, 7 Jan 2010 17:13:11 -0500 Subject: trace-view: Keep selected row when updating filter Keep the current row selected (or at least near by) when updating the list event filter. Signed-off-by: Steven Rostedt --- trace-view.c | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/trace-view.c b/trace-view.c index fef2a37..8b98e48 100644 --- a/trace-view.c +++ b/trace-view.c @@ -369,6 +369,9 @@ void trace_view_event_filter_callback(gboolean accept, GtkTreeView *trace_tree = data; GtkTreeModel *model; TraceViewStore *store; + TraceViewRecord *vrec; + guint64 time; + gint row; gint i; if (!accept) @@ -399,12 +402,22 @@ void trace_view_event_filter_callback(gboolean accept, } } + /* Keep track of the currently selected row */ + row = trace_view_get_selected_row(GTK_WIDGET(trace_tree)); + if (row >= 0) { + vrec = trace_view_store_get_row(store, row); + time = vrec->timestamp; + } + /* Force an update */ g_object_ref(store); gtk_tree_view_set_model(trace_tree, NULL); trace_view_store_update_filter(store); gtk_tree_view_set_model(trace_tree, GTK_TREE_MODEL(store)); g_object_unref(store); + + if (row >= 0) + trace_view_select(GTK_WIDGET(trace_tree), time); } void trace_view_cpu_filter_callback(gboolean accept, -- cgit v1.2.2