diff options
author | Steven Rostedt <srostedt@redhat.com> | 2010-01-05 22:56:03 -0500 |
---|---|---|
committer | Steven Rostedt <rostedt@goodmis.org> | 2010-01-05 22:56:03 -0500 |
commit | 2cb26711cd0bc74d763db72e45307b0f9c93b655 (patch) | |
tree | 6bf42771e5d43d05b66b6fb5f62151ec7bb1b11c | |
parent | a7de507ed72ec2a0bbe6b19b9ff1cb09e98c6713 (diff) |
trace-view: Have deselecting an event system clear all
If the event filter system or all-events is deselected, have
it deselect all its siblings. This is useful if you only want
to see a few events.
Signed-off-by: Steven Rostedt <rostedt@goodmis.org>
-rw-r--r-- | trace-filter.c | 22 | ||||
-rw-r--r-- | trace-view-store.c | 35 | ||||
-rw-r--r-- | trace-view-store.h | 2 |
3 files changed, 41 insertions, 18 deletions
diff --git a/trace-filter.c b/trace-filter.c index ba3b0fd..fd456aa 100644 --- a/trace-filter.c +++ b/trace-filter.c | |||
@@ -195,22 +195,18 @@ static void event_cursor_changed(GtkTreeView *treeview, gpointer data) | |||
195 | 195 | ||
196 | if (depth == 1) { | 196 | if (depth == 1) { |
197 | 197 | ||
198 | if (active) | 198 | /* Set all rows */ |
199 | /* Set all rows */ | 199 | update_active_systems(model, &iter, active); |
200 | update_active_systems(model, &iter, TRUE); | ||
201 | 200 | ||
202 | } else if (depth == 2) { | 201 | } else if (depth == 2) { |
203 | if (active) { | 202 | |
204 | /* set this system */ | 203 | /* set this system */ |
205 | update_active_events(model, &iter, TRUE); | 204 | update_active_events(model, &iter, active); |
206 | } else { | 205 | |
206 | if (!active) | ||
207 | /* disable the all events toggle */ | 207 | /* disable the all events toggle */ |
208 | gtk_tree_model_iter_parent(model, &parent, &iter); | 208 | gtk_tree_model_iter_parent(model, &parent, &iter); |
209 | gtk_tree_store_set(GTK_TREE_STORE(model), &parent, | 209 | |
210 | COL_ACTIVE, FALSE, | ||
211 | -1); | ||
212 | } | ||
213 | |||
214 | } else { | 210 | } else { |
215 | if (!active) { | 211 | if (!active) { |
216 | /* disable system and all events toggles */ | 212 | /* disable system and all events toggles */ |
@@ -312,6 +308,8 @@ static void update_system_events(TraceViewStore *store, | |||
312 | if (!gtk_tree_model_iter_children(model, &sys, parent)) | 308 | if (!gtk_tree_model_iter_children(model, &sys, parent)) |
313 | return; | 309 | return; |
314 | 310 | ||
311 | trace_view_store_clear_all_events_enabled(store); | ||
312 | |||
315 | for (;;) { | 313 | for (;;) { |
316 | 314 | ||
317 | gtk_tree_model_get(model, &sys, | 315 | gtk_tree_model_get(model, &sys, |
diff --git a/trace-view-store.c b/trace-view-store.c index 9ad2073..b61b249 100644 --- a/trace-view-store.c +++ b/trace-view-store.c | |||
@@ -552,15 +552,10 @@ gboolean trace_view_store_event_enabled(TraceViewStore *store, gint event_id) | |||
552 | return ret != NULL; | 552 | return ret != NULL; |
553 | } | 553 | } |
554 | 554 | ||
555 | void trace_view_store_set_all_events_enabled(TraceViewStore *store) | 555 | static void clear_all_events(TraceViewStore *store) |
556 | { | 556 | { |
557 | gint i; | 557 | gint i; |
558 | 558 | ||
559 | g_return_if_fail (TRACE_VIEW_IS_LIST (store)); | ||
560 | |||
561 | if (store->all_events) | ||
562 | return; | ||
563 | |||
564 | if (store->systems_size) { | 559 | if (store->systems_size) { |
565 | for (i = 0; i < store->systems_size; i++) | 560 | for (i = 0; i < store->systems_size; i++) |
566 | g_free(store->systems[i]); | 561 | g_free(store->systems[i]); |
@@ -573,6 +568,29 @@ void trace_view_store_set_all_events_enabled(TraceViewStore *store) | |||
573 | g_free(store->event_types); | 568 | g_free(store->event_types); |
574 | store->event_types = NULL; | 569 | store->event_types = NULL; |
575 | store->event_types_size = 0; | 570 | store->event_types_size = 0; |
571 | } | ||
572 | |||
573 | void trace_view_store_clear_all_events_enabled(TraceViewStore *store) | ||
574 | { | ||
575 | g_return_if_fail (TRACE_VIEW_IS_LIST (store)); | ||
576 | |||
577 | clear_all_events(store); | ||
578 | |||
579 | store->all_events = 0; | ||
580 | } | ||
581 | |||
582 | void trace_view_store_set_all_events_enabled(TraceViewStore *store) | ||
583 | { | ||
584 | g_return_if_fail (TRACE_VIEW_IS_LIST (store)); | ||
585 | |||
586 | if (store->all_events) | ||
587 | return; | ||
588 | |||
589 | /* | ||
590 | * All enabled means that we don't need to look at | ||
591 | * the system events, so free those arrays. | ||
592 | */ | ||
593 | clear_all_events(store); | ||
576 | 594 | ||
577 | store->all_events = 1; | 595 | store->all_events = 1; |
578 | } | 596 | } |
@@ -1225,7 +1243,12 @@ trace_view_store_get_row(TraceViewStore *store, gint row) | |||
1225 | TraceViewRecord *record; | 1243 | TraceViewRecord *record; |
1226 | g_return_val_if_fail(TRACE_VIEW_IS_LIST(store), NULL); | 1244 | g_return_val_if_fail(TRACE_VIEW_IS_LIST(store), NULL); |
1227 | 1245 | ||
1246 | /* If we don't have any visible rows, return NULL */ | ||
1247 | if (!store->visible_rows) | ||
1248 | return NULL; | ||
1249 | |||
1228 | row += store->start_row; | 1250 | row += store->start_row; |
1251 | |||
1229 | g_return_val_if_fail(row >= store->start_row && row < store->visible_rows, NULL); | 1252 | g_return_val_if_fail(row >= store->start_row && row < store->visible_rows, NULL); |
1230 | 1253 | ||
1231 | record = store->rows[row]; | 1254 | record = store->rows[row]; |
diff --git a/trace-view-store.h b/trace-view-store.h index 60f90a5..07c3a24 100644 --- a/trace-view-store.h +++ b/trace-view-store.h | |||
@@ -134,6 +134,8 @@ void trace_view_store_set_system_enabled(TraceViewStore *store, const gchar *sys | |||
134 | 134 | ||
135 | void trace_view_store_set_event_enabled(TraceViewStore *store, gint event_id); | 135 | void trace_view_store_set_event_enabled(TraceViewStore *store, gint event_id); |
136 | 136 | ||
137 | void trace_view_store_clear_all_events_enabled(TraceViewStore *store); | ||
138 | |||
137 | void trace_view_store_update_filter(TraceViewStore *store); | 139 | void trace_view_store_update_filter(TraceViewStore *store); |
138 | 140 | ||
139 | /* TraceViewStore methods */ | 141 | /* TraceViewStore methods */ |