diff options
author | Kovarththanan Rajaratnam <kovarththanan.rajaratnam@gmail.com> | 2009-09-07 13:10:59 +0000 |
---|---|---|
committer | Kovarththanan Rajaratnam <kovarththanan.rajaratnam@gmail.com> | 2009-09-07 13:10:59 +0000 |
commit | 4fbc99e41141448c754d51ac76f2b3821fa94099 (patch) | |
tree | bd147a183974b161e9d4405b61abaaab55c6a28b /gtk/packet_list_store.c | |
parent | dae465ed6f67ea225cc59e0ad944a3afa59597ee (diff) |
Auto resize non frame_data based columns
svn path=/trunk/; revision=29766
Diffstat (limited to 'gtk/packet_list_store.c')
-rw-r--r-- | gtk/packet_list_store.c | 37 |
1 files changed, 37 insertions, 0 deletions
diff --git a/gtk/packet_list_store.c b/gtk/packet_list_store.c index 9ccacec645..d4a70a6d91 100644 --- a/gtk/packet_list_store.c +++ b/gtk/packet_list_store.c @@ -1014,5 +1014,42 @@ packet_list_reset_colorized(PacketList *packet_list) } } +const char* +packet_list_get_widest_column_string(PacketList *packet_list, gint col) +{ + g_return_val_if_fail(packet_list != NULL, NULL); + g_return_val_if_fail(PACKETLIST_IS_LIST(packet_list), NULL); + g_return_val_if_fail(col < packet_list->n_columns && col >= 0, NULL); + + if (PACKET_LIST_RECORD_COUNT(packet_list->visible_rows) == 0) + return ""; + + if (col_based_on_frame_data(&cfile.cinfo, col)) { + /* TODO: Calculate according to column */ + return get_column_width_string(get_column_format(col), col); + } + else { + PacketListRecord *record; + guint vis_idx; + guint widest_column_idx = 0; + guint widest_column_len = 0; + + if (!packet_list->columnized) + packet_list_dissect_and_cache_all(packet_list); + + for(vis_idx = 0; vis_idx < PACKET_LIST_RECORD_COUNT(packet_list->visible_rows); ++vis_idx) { + record = PACKET_LIST_RECORD_GET(packet_list->visible_rows, vis_idx); + if (record->fdata->col_text_len[col] > widest_column_len) { + widest_column_idx = vis_idx; + widest_column_len = record->fdata->col_text_len[col]; + } + } + + g_assert(widest_column_idx < PACKET_LIST_RECORD_COUNT(packet_list->visible_rows)); + record = PACKET_LIST_RECORD_GET(packet_list->visible_rows, widest_column_idx); + return record->fdata->col_text[col]; + } +} + #endif /* NEW_PACKET_LIST */ |