diff options
author | Jakub Zawadzki <darkjames-ws@darkjames.pl> | 2012-06-30 10:43:50 +0000 |
---|---|---|
committer | Jakub Zawadzki <darkjames-ws@darkjames.pl> | 2012-06-30 10:43:50 +0000 |
commit | 8c1d02377e7ee4b7ebf57b18a862c25063e32738 (patch) | |
tree | fe1367d43a30aa8e2a212cf905140419a7882e0c /ui/gtk/proto_tree_model.c | |
parent | 3a4678b00f248200524fb044aa77abb595fc8897 (diff) |
Fix bug #7425: Per-packet right-click network or MAC name resolution not working
proto_tree_draw() from r43189 is lazy, and it don't fills tree with all item labels.
To fix it, move 'gbl_resolv_flags' hack to proto_tree_model_get_value().
XXX could we pass resolving flags to proto_item_fill_label()?
svn path=/trunk/; revision=43550
Diffstat (limited to 'ui/gtk/proto_tree_model.c')
-rw-r--r-- | ui/gtk/proto_tree_model.c | 26 |
1 files changed, 24 insertions, 2 deletions
diff --git a/ui/gtk/proto_tree_model.c b/ui/gtk/proto_tree_model.c index 66ecc0aacf..46c66ee278 100644 --- a/ui/gtk/proto_tree_model.c +++ b/ui/gtk/proto_tree_model.c @@ -34,6 +34,7 @@ #include <gtk/gtk.h> #include <glib.h> +#include <epan/addr_resolv.h> #include <epan/proto.h> static GObjectClass *parent_class = NULL; @@ -51,6 +52,9 @@ struct proto_tree_model { proto_tree *protocol_tree; int with_hidden; + + gboolean resolv_forced; + guint32 resolv_flags; }; #include "proto_tree_model.h" @@ -195,9 +199,19 @@ proto_tree_model_get_value(GtkTreeModel *tree_model, GtkTreeIter *iter, gint col switch (column) { case 0: + { g_value_init(value, G_TYPE_STRING); - g_value_take_string(value, fi_get_string(fi)); + if (model->resolv_forced) { + guint32 old_flags = gbl_resolv_flags; + + gbl_resolv_flags = model->resolv_flags; + g_value_take_string(value, fi_get_string(fi)); + gbl_resolv_flags = old_flags; + + } else + g_value_take_string(value, fi_get_string(fi)); break; + } case 1: g_value_init(value, G_TYPE_POINTER); @@ -440,6 +454,13 @@ proto_tree_model_get_type(void) return proto_tree_type; } +void +proto_tree_model_force_resolv(ProtoTreeModel *model, guint32 flags) +{ + model->resolv_forced = TRUE; + model->resolv_flags = flags; +} + ProtoTreeModel * proto_tree_model_new(proto_tree *protocol_tree, int display_hidden_proto_items) { @@ -449,7 +470,8 @@ proto_tree_model_new(proto_tree *protocol_tree, int display_hidden_proto_items) g_assert(model != NULL); model->protocol_tree = protocol_tree; - model->with_hidden = display_hidden_proto_items; + model->with_hidden = display_hidden_proto_items; + model->resolv_forced = FALSE; return model; } |