aboutsummaryrefslogtreecommitdiffstats
path: root/ui/gtk/proto_hier_tree_model.c
diff options
context:
space:
mode:
authorBill Meier <wmeier@newsguy.com>2012-06-27 14:58:32 +0000
committerBill Meier <wmeier@newsguy.com>2012-06-27 14:58:32 +0000
commit9489edfbde023bcd3b9ea013ff543e6398ba31ef (patch)
treea6aa391488b8b372c8f42db65c8f75bc6c5d212d /ui/gtk/proto_hier_tree_model.c
parent698337ee9abeb662b433b50ba64b103bf9733c62 (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.c42
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