diff options
author | Bill Meier <wmeier@newsguy.com> | 2012-06-27 14:58:32 +0000 |
---|---|---|
committer | Bill Meier <wmeier@newsguy.com> | 2012-06-27 14:58:32 +0000 |
commit | 9489edfbde023bcd3b9ea013ff543e6398ba31ef (patch) | |
tree | a6aa391488b8b372c8f42db65c8f75bc6c5d212d /ui/gtk/proto_hier_tree_model.c | |
parent | 698337ee9abeb662b433b50ba64b103bf9733c62 (diff) |
Commit file which should have been part of SVN #43506
From Jakub Zawadzki: Fix "typeahead search broken in Display Filter Expression Window"
Revert SVN #42291.
Fixes Bug #7412: https://bugs.wireshark.org/bugzilla/show_bug.cgi?id=7412
svn path=/trunk/; revision=43511
Diffstat (limited to 'ui/gtk/proto_hier_tree_model.c')
-rw-r--r-- | ui/gtk/proto_hier_tree_model.c | 42 |
1 files changed, 36 insertions, 6 deletions
diff --git a/ui/gtk/proto_hier_tree_model.c b/ui/gtk/proto_hier_tree_model.c index 2460686351..bdec0f50d4 100644 --- a/ui/gtk/proto_hier_tree_model.c +++ b/ui/gtk/proto_hier_tree_model.c @@ -53,16 +53,23 @@ proto_hier_tree_get_n_columns(GtkTreeModel *tree_model) { g_return_val_if_fail(PROTOHIER_IS_TREE(tree_model), 0); - return 1; + return 2; } static GType proto_hier_tree_get_column_type(GtkTreeModel *tree_model, gint idx) { g_return_val_if_fail(PROTOHIER_IS_TREE(tree_model), G_TYPE_INVALID); - g_return_val_if_fail(idx == 0, G_TYPE_INVALID); + g_return_val_if_fail(idx == 0 || idx == 1, G_TYPE_INVALID); - return G_TYPE_POINTER; + switch (idx) { + case 0: + return G_TYPE_POINTER; + case 1: + return G_TYPE_STRING; + } + /* never here */ + return G_TYPE_INVALID; } static gboolean @@ -156,6 +163,20 @@ proto_hier_tree_get_iter(GtkTreeModel *tree_model, GtkTreeIter *iter, GtkTreePat return TRUE; } +static char * +hfinfo_to_name(const header_field_info *hfinfo) +{ + if (hfinfo->parent == -1) { + protocol_t *protocol = find_protocol_by_id(hfinfo->id); + + return g_strdup_printf("%s - %s", proto_get_protocol_short_name(protocol), proto_get_protocol_long_name(protocol)); + } + if (hfinfo->blurb != NULL && hfinfo->blurb[0] != '\0') + return g_strdup_printf("%s - %s (%s)", hfinfo->abbrev, hfinfo->name, hfinfo->blurb); + else + return g_strdup_printf("%s - %s", hfinfo->abbrev, hfinfo->name); +} + static void proto_hier_tree_get_value(GtkTreeModel *tree_model, GtkTreeIter *iter, gint column, GValue *value) { @@ -167,12 +188,21 @@ proto_hier_tree_get_value(GtkTreeModel *tree_model, GtkTreeIter *iter, gint colu g_return_if_fail(iter != NULL); g_return_if_fail(iter->stamp == model->stamp); - g_return_if_fail(column == 0); + g_return_if_fail(column == 0 || column == 1); hfinfo = iter->user_data3; - g_value_init(value, G_TYPE_POINTER); - g_value_set_pointer(value, hfinfo); + switch (column) { + case 0: /* hfinfo */ + g_value_init(value, G_TYPE_POINTER); + g_value_set_pointer(value, hfinfo); + break; + + case 1: /* field name */ + g_value_init(value, G_TYPE_STRING); + g_value_take_string(value, hfinfo_to_name(hfinfo)); + break; + } } static gboolean |