aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSteven Rostedt <srostedt@redhat.com>2010-01-07 17:13:11 -0500
committerSteven Rostedt <rostedt@goodmis.org>2010-01-07 17:13:11 -0500
commitcf09cc6e3cc4d8ccde399348fbbe4adb912c1ba0 (patch)
tree7ab0ad5994b465c84c1d3c490111a0a3ed639bf8
parent4c15ef754ee624337f7c0c5acc93a685aa19a40c (diff)
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 <rostedt@goodmis.org>
-rw-r--r--trace-view.c13
1 files changed, 13 insertions, 0 deletions
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,
369 GtkTreeView *trace_tree = data; 369 GtkTreeView *trace_tree = data;
370 GtkTreeModel *model; 370 GtkTreeModel *model;
371 TraceViewStore *store; 371 TraceViewStore *store;
372 TraceViewRecord *vrec;
373 guint64 time;
374 gint row;
372 gint i; 375 gint i;
373 376
374 if (!accept) 377 if (!accept)
@@ -399,12 +402,22 @@ void trace_view_event_filter_callback(gboolean accept,
399 } 402 }
400 } 403 }
401 404
405 /* Keep track of the currently selected row */
406 row = trace_view_get_selected_row(GTK_WIDGET(trace_tree));
407 if (row >= 0) {
408 vrec = trace_view_store_get_row(store, row);
409 time = vrec->timestamp;
410 }
411
402 /* Force an update */ 412 /* Force an update */
403 g_object_ref(store); 413 g_object_ref(store);
404 gtk_tree_view_set_model(trace_tree, NULL); 414 gtk_tree_view_set_model(trace_tree, NULL);
405 trace_view_store_update_filter(store); 415 trace_view_store_update_filter(store);
406 gtk_tree_view_set_model(trace_tree, GTK_TREE_MODEL(store)); 416 gtk_tree_view_set_model(trace_tree, GTK_TREE_MODEL(store));
407 g_object_unref(store); 417 g_object_unref(store);
418
419 if (row >= 0)
420 trace_view_select(GTK_WIDGET(trace_tree), time);
408} 421}
409 422
410void trace_view_cpu_filter_callback(gboolean accept, 423void trace_view_cpu_filter_callback(gboolean accept,