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, |
