diff options
author | Steven Rostedt <srostedt@redhat.com> | 2009-12-01 13:46:45 -0500 |
---|---|---|
committer | Steven Rostedt <rostedt@goodmis.org> | 2009-12-17 21:43:46 -0500 |
commit | 9b871aa553482770a9cddebd6ea6e55151ae4aa0 (patch) | |
tree | 4efd91c1372fb527593e6a03f2618a87022952ed | |
parent | 24259ddaebbdf6e43fc369ef502f52733e28a9ba (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.c | 47 |
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 | |||
248 | static 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 | { |