aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSteven Rostedt <srostedt@redhat.com>2010-01-05 22:56:03 -0500
committerSteven Rostedt <rostedt@goodmis.org>2010-01-05 22:56:03 -0500
commit2cb26711cd0bc74d763db72e45307b0f9c93b655 (patch)
tree6bf42771e5d43d05b66b6fb5f62151ec7bb1b11c
parenta7de507ed72ec2a0bbe6b19b9ff1cb09e98c6713 (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.c22
-rw-r--r--trace-view-store.c35
-rw-r--r--trace-view-store.h2
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
555void trace_view_store_set_all_events_enabled(TraceViewStore *store) 555static 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
573void 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
582void 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
135void trace_view_store_set_event_enabled(TraceViewStore *store, gint event_id); 135void trace_view_store_set_event_enabled(TraceViewStore *store, gint event_id);
136 136
137void trace_view_store_clear_all_events_enabled(TraceViewStore *store);
138
137void trace_view_store_update_filter(TraceViewStore *store); 139void trace_view_store_update_filter(TraceViewStore *store);
138 140
139/* TraceViewStore methods */ 141/* TraceViewStore methods */