}
}
-#ifndef NEW_PACKET_LIST
static gchar *
get_filter_from_packet_list_row_and_column(gpointer data)
{
- gint row = GPOINTER_TO_INT(g_object_get_data(G_OBJECT(data), E_MPACKET_LIST_ROW_KEY));
- gint column = GPOINTER_TO_INT(g_object_get_data(G_OBJECT(data), E_MPACKET_LIST_COL_KEY));
- frame_data *fdata = (frame_data *) packet_list_get_row_data(row);
- epan_dissect_t edt;
+ gint row = GPOINTER_TO_INT(g_object_get_data(G_OBJECT(data), E_MPACKET_LIST_ROW_KEY));
+ gint column = GPOINTER_TO_INT(g_object_get_data(G_OBJECT(data), E_MPACKET_LIST_COL_KEY));
+ frame_data *fdata;
gchar *buf=NULL;
int err;
gchar *err_info;
+#ifdef NEW_PACKET_LIST
+ fdata = (frame_data *) new_packet_list_get_row_data(row);
+#else
+ fdata = (frame_data *) packet_list_get_row_data(row);
+#endif
+
if (fdata != NULL) {
- if (!wtap_seek_read(cfile.wth, fdata->file_off, &cfile.pseudo_header,
- cfile.pd, fdata->cap_len, &err, &err_info)) {
- simple_dialog(ESD_TYPE_ERROR, ESD_BTN_OK,
- cf_read_error_message(err, err_info), cfile.filename);
- return NULL;
- }
- /* proto tree, visible. We need a proto tree if there's custom columns */
- epan_dissect_init(&edt, have_custom_cols(&cfile.cinfo), FALSE);
- col_custom_prime_edt(&edt, &cfile.cinfo);
-
- epan_dissect_run(&edt, &cfile.pseudo_header, cfile.pd, fdata,
- &cfile.cinfo);
- epan_dissect_fill_in_columns(&edt, TRUE);
+ epan_dissect_t edt;
- if (strlen(cfile.cinfo.col_expr.col_expr[column]) != 0 &&
- strlen(cfile.cinfo.col_expr.col_expr_val[column]) != 0) {
- /* leak a little but safer than ep_ here*/
- buf = se_strdup_printf("%s == %s", cfile.cinfo.col_expr.col_expr[column],
- cfile.cinfo.col_expr.col_expr_val[column]);
- }
+ if (!wtap_seek_read(cfile.wth, fdata->file_off, &cfile.pseudo_header,
+ cfile.pd, fdata->cap_len, &err, &err_info)) {
+ simple_dialog(ESD_TYPE_ERROR, ESD_BTN_OK,
+ cf_read_error_message(err, err_info), cfile.filename);
+ return NULL;
+ }
+ /* proto tree, visible. We need a proto tree if there's custom columns */
+ epan_dissect_init(&edt, have_custom_cols(&cfile.cinfo), FALSE);
+ col_custom_prime_edt(&edt, &cfile.cinfo);
+
+ epan_dissect_run(&edt, &cfile.pseudo_header, cfile.pd, fdata,
+ &cfile.cinfo);
+ epan_dissect_fill_in_columns(&edt, TRUE);
+
+ if (strlen(cfile.cinfo.col_expr.col_expr[column]) != 0 &&
+ strlen(cfile.cinfo.col_expr.col_expr_val[column]) != 0) {
+ /* leak a little but safer than ep_ here*/
+ buf = se_strdup_printf("%s == %s", cfile.cinfo.col_expr.col_expr[column],
+ cfile.cinfo.col_expr.col_expr_val[column]);
+ }
- epan_dissect_cleanup(&edt);
+ epan_dissect_cleanup(&edt);
}
return buf;
action,
get_filter_from_packet_list_row_and_column(data));
}
-#endif /* NEW_PACKET_LIST */
/* This function allows users to right click in the details window and copy the text
* information to the operating systems clipboard.
*/
extern void colorize_selected_ptree_cb(GtkWidget *w, gpointer data, guint8 filt_nr);
-#ifndef NEW_PACKET_LIST
/** User requested one of "Apply as Filter" or "Prepare a Filter" functions
* by context menu of packet list.
*
* @param action the function to use
*/
extern void match_selected_plist_cb(GtkWidget *widget, gpointer data, MATCH_SELECTED_E action);
-#endif /* NEW_PACKET_LIST */
/** User requested "Quit" by menu or toolbar.
*
{"/<separator>", NULL, NULL, 0, "<Separator>", NULL,},
{"/Apply as Filter", NULL, NULL, 0, "<Branch>", NULL,},
-#ifndef NEW_PACKET_LIST
{"/Apply as Filter/_Selected", NULL, GTK_MENU_FUNC(match_selected_plist_cb),
MATCH_SELECTED_REPLACE|MATCH_SELECTED_APPLY_NOW, NULL, NULL,},
{"/Apply as Filter/_Not Selected", NULL, GTK_MENU_FUNC(match_selected_plist_cb),
MATCH_SELECTED_AND_NOT, NULL, NULL,},
{"/Prepare a Filter/... o_r not Selected", NULL, GTK_MENU_FUNC(match_selected_plist_cb),
MATCH_SELECTED_OR_NOT, NULL, NULL,},
-#endif /* NEW_PACKET_LIST */
{"/Conversation Filter", NULL, NULL, 0, "<Branch>",NULL,},
{"/Conversation Filter/Ethernet", NULL, GTK_MENU_FUNC(conversation_cb),
CONV_ETHER, NULL, NULL,},
if (widget == g_object_get_data(G_OBJECT(popup_menu_object), E_MPACKET_LIST_KEY) &&
((GdkEventButton *)event)->button != 1) {
#ifdef NEW_PACKET_LIST
- if (new_packet_list_get_event_row_column(widget, (GdkEventButton *)event, &row, &column)) {
+ gint physical_row;
+ if (new_packet_list_get_event_row_column((GdkEventButton *)event, &physical_row, &row, &column)) {
#else
if (packet_list_get_event_row_column(widget, (GdkEventButton *)event, &row, &column)) {
#endif
g_object_set_data(G_OBJECT(popup_menu_object), E_MPACKET_LIST_ROW_KEY,
+#ifdef NEW_PACKET_LIST
+ GINT_TO_POINTER(physical_row));
+#else
GINT_TO_POINTER(row));
+#endif
g_object_set_data(G_OBJECT(popup_menu_object), E_MPACKET_LIST_COL_KEY,
GINT_TO_POINTER(column));
#ifdef NEW_PACKET_LIST
}
gboolean
-new_packet_list_get_event_row_column(GtkWidget *w _U_, GdkEventButton *event_button,
- gint *row, gint *column)
+new_packet_list_get_event_row_column(GdkEventButton *event_button,
+ gint *physical_row, gint *row, gint *column)
{
GtkTreeModel *model = gtk_tree_view_get_model(GTK_TREE_VIEW(packetlist->view));
GtkTreePath *path;
GtkTreeIter iter;
GList *cols;
gint *indices;
+ PacketListRecord *record;
/* Fetch indices */
gtk_tree_model_get_iter(model, &iter, path);
*row = indices[0] + 1;
gtk_tree_path_free(path);
+ /* Fetch physical row */
+ record = new_packet_list_get_record(model, &iter);
+ *physical_row = record->fdata->num;
+
/* Fetch column */
/* XXX -doesn't work if columns are re-arranged? */
cols = gtk_tree_view_get_columns(GTK_TREE_VIEW(packetlist->view));
#ifdef NEW_PACKET_LIST
#include <gtk/gtk.h>
+
GtkWidget *new_packet_list_create(void);
void new_packet_list_resize_columns_cb(GtkWidget *widget _U_, gpointer data _U_);
-gboolean new_packet_list_get_event_row_column(GtkWidget *w, GdkEventButton *event_button, gint *row, gint *column);
+gboolean new_packet_list_get_event_row_column(GdkEventButton *event_button, gint *physical_row, gint *row, gint *column);
/** Set the font of the packet list window.
*