diff options
author | Steven Rostedt <srostedt@redhat.com> | 2010-01-07 17:13:11 -0500 |
---|---|---|
committer | Steven Rostedt <rostedt@goodmis.org> | 2010-01-07 17:13:11 -0500 |
commit | cf09cc6e3cc4d8ccde399348fbbe4adb912c1ba0 (patch) | |
tree | 7ab0ad5994b465c84c1d3c490111a0a3ed639bf8 | |
parent | 4c15ef754ee624337f7c0c5acc93a685aa19a40c (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.c | 13 |
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 | ||
410 | void trace_view_cpu_filter_callback(gboolean accept, | 423 | void trace_view_cpu_filter_callback(gboolean accept, |