aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSteven Rostedt <srostedt@redhat.com>2009-12-01 13:46:45 -0500
committerSteven Rostedt <rostedt@goodmis.org>2009-12-17 21:43:46 -0500
commit9b871aa553482770a9cddebd6ea6e55151ae4aa0 (patch)
tree4efd91c1372fb527593e6a03f2618a87022952ed
parent24259ddaebbdf6e43fc369ef502f52733e28a9ba (diff)
Fixed column finding without all columns visible
Fixed a bug where the column returned when all columns were not visible would be less than 1. Consolidated the calculating of the column index into a single function. Signed-off-by: Steven Rostedt <rostedt@goodmis.org>
-rw-r--r--trace-view-store.c47
1 files changed, 29 insertions, 18 deletions
diff --git a/trace-view-store.c b/trace-view-store.c
index 6d3cfaf..37c98f6 100644
--- a/trace-view-store.c
+++ b/trace-view-store.c
@@ -239,6 +239,33 @@ trace_view_store_get_n_columns (GtkTreeModel *tree_model)
239 return TRACE_VIEW_STORE(tree_model)->n_columns; 239 return TRACE_VIEW_STORE(tree_model)->n_columns;
240} 240}
241 241
242/*****************************************************************************
243 *
244 * get_visible_column: Return the index of the visible columns
245 *
246 *****************************************************************************/
247
248static gint get_visible_column(TraceViewStore *trace_view, gint column)
249{
250 guint i;
251
252 /* If all columns are visible just use what was passed in */
253 if (trace_view->visible_column_mask == ((1 << TRACE_VIEW_STORE_N_COLUMNS) - 1))
254 return column;
255
256 column++; /* make 0 drop out */
257
258 for (i = 0; column && i < TRACE_VIEW_STORE_N_COLUMNS; i++) {
259 if (!trace_view->visible_column_mask & (1 << i))
260 continue;
261
262 column--;
263 }
264 g_assert(column == 0);
265
266 /* We upped column, so me must dec the return */
267 return i - 1;
268}
242 269
243/***************************************************************************** 270/*****************************************************************************
244 * 271 *
@@ -254,6 +281,7 @@ trace_view_store_get_column_type (GtkTreeModel *tree_model,
254 g_return_val_if_fail (TRACE_VIEW_IS_LIST(tree_model), G_TYPE_INVALID); 281 g_return_val_if_fail (TRACE_VIEW_IS_LIST(tree_model), G_TYPE_INVALID);
255 g_return_val_if_fail (index < TRACE_VIEW_STORE(tree_model)->n_columns && index >= 0, G_TYPE_INVALID); 282 g_return_val_if_fail (index < TRACE_VIEW_STORE(tree_model)->n_columns && index >= 0, G_TYPE_INVALID);
256 283
284 index = get_visible_column(TRACE_VIEW_STORE(tree_model), index);
257 return TRACE_VIEW_STORE(tree_model)->column_types[index]; 285 return TRACE_VIEW_STORE(tree_model)->column_types[index];
258} 286}
259 287
@@ -380,24 +408,7 @@ trace_view_store_get_value (GtkTreeModel *tree_model,
380 if(record->pos >= trace_view_store->num_rows) 408 if(record->pos >= trace_view_store->num_rows)
381 g_return_if_reached(); 409 g_return_if_reached();
382 410
383 /* If all columns are visible just use what was passed in */ 411 column = get_visible_column(TRACE_VIEW_STORE(tree_model), column);
384 if (trace_view_store->visible_column_mask !=
385 ((1 << TRACE_VIEW_STORE_N_COLUMNS) - 1)) {
386 guint i;
387
388 column++; /* make 0 drop out */
389
390 for (i = 0; column && i < TRACE_VIEW_STORE_N_COLUMNS; i++) {
391 if (!trace_view_store->visible_column_mask & (1 << i))
392 continue;
393
394 column--;
395 }
396
397 g_return_if_fail(column);
398
399 column = i;
400 }
401 412
402 switch(column) 413 switch(column)
403 { 414 {