diff options
author | Anders Broman <anders.broman@ericsson.com> | 2010-10-10 19:33:42 +0000 |
---|---|---|
committer | Anders Broman <anders.broman@ericsson.com> | 2010-10-10 19:33:42 +0000 |
commit | 45371fce829e27cc37c66bf079563d48360900a3 (patch) | |
tree | 4ceb9d7cb9e85c772121028c53304b5409dbd9bf /gtk | |
parent | f9371b0e0bd46c524781d97ec7f4171fd050bed8 (diff) |
- Fix more callbacks.
When using the GUImanager the callback signature is (GtkAction *action , gpointer user_data) which causes problems when retreiveing
object data stored with the widget such as the filter box widget.
Work around that problem by doing
filter_cm = g_object_get_data(G_OBJECT(top_level), E_DFILTER_CM_KEY);
filter_te = gtk_bin_get_child(GTK_BIN(filter_cm));
in the follow_udp/tcp/ssl_stream.
svn path=/trunk/; revision=34455
Diffstat (limited to 'gtk')
-rw-r--r-- | gtk/follow_ssl.c | 6 | ||||
-rw-r--r-- | gtk/follow_tcp.c | 7 | ||||
-rw-r--r-- | gtk/follow_udp.c | 8 | ||||
-rw-r--r-- | gtk/keys.h | 1 | ||||
-rw-r--r-- | gtk/main_filter_toolbar.h | 1 | ||||
-rw-r--r-- | gtk/menus.c | 115 |
6 files changed, 87 insertions, 51 deletions
diff --git a/gtk/follow_ssl.c b/gtk/follow_ssl.c index d39c14b09e..f65e7e34af 100644 --- a/gtk/follow_ssl.c +++ b/gtk/follow_ssl.c @@ -51,6 +51,7 @@ #include <../simple_dialog.h> #include <../util.h> +#include "gtkglobals.h" #include <gtk/color_utils.h> #include <gtk/main.h> #include <gtk/dlg_utils.h> @@ -139,7 +140,7 @@ packet_is_ssl(epan_dissect_t* edt); void follow_ssl_stream_cb(GtkWidget * w, gpointer data _U_) { - GtkWidget *filter_te; + GtkWidget *filter_te, *filter_cm; gchar *follow_filter; const gchar *previous_filter; int filter_out_filter_len, previous_filter_len; @@ -177,7 +178,8 @@ follow_ssl_stream_cb(GtkWidget * w, gpointer data _U_) } /* Set the display filter entry accordingly */ - filter_te = g_object_get_data(G_OBJECT(w), E_DFILTER_TE_KEY); + filter_cm = g_object_get_data(G_OBJECT(top_level), E_DFILTER_CM_KEY); + filter_te = gtk_bin_get_child(GTK_BIN(filter_cm)); /* needed in follow_filter_out_stream(), is there a better way? */ follow_info->filter_te = filter_te; diff --git a/gtk/follow_tcp.c b/gtk/follow_tcp.c index c517592e4a..f20b02dd8c 100644 --- a/gtk/follow_tcp.c +++ b/gtk/follow_tcp.c @@ -56,6 +56,7 @@ #include "../tempfile.h" #include <wsutil/file_util.h> +#include "gtkglobals.h" #include "gtk/color_utils.h" #include "gtk/follow_tcp.h" #include "gtk/dlg_utils.h" @@ -89,8 +90,9 @@ follow_tcp_redraw_all(void) a dissection routine on belongs (this might be the most recently selected packet, or it might be the last packet in the file). */ void -follow_tcp_stream_cb(GtkWidget * w, gpointer data _U_) +follow_tcp_stream_cb(GtkWidget * w _U_, gpointer data _U_) { + GtkWidget *filter_cm; GtkWidget *filter_te; int tmp_fd; gchar *follow_filter; @@ -165,7 +167,8 @@ follow_tcp_stream_cb(GtkWidget * w, gpointer data _U_) } /* Set the display filter entry accordingly */ - filter_te = g_object_get_data(G_OBJECT(w), E_DFILTER_TE_KEY); + filter_cm = g_object_get_data(G_OBJECT(top_level), E_DFILTER_CM_KEY); + filter_te = gtk_bin_get_child(GTK_BIN(filter_cm)); /* needed in follow_filter_out_stream(), is there a better way? */ follow_info->filter_te = filter_te; diff --git a/gtk/follow_udp.c b/gtk/follow_udp.c index 1195028291..81af8f3378 100644 --- a/gtk/follow_udp.c +++ b/gtk/follow_udp.c @@ -39,6 +39,7 @@ #include <../simple_dialog.h> +#include "gtkglobals.h" #include "gtk/follow_stream.h" #include <gtk/keys.h> #include <gtk/main.h> @@ -85,9 +86,9 @@ udp_queue_packet_data(void *tapdata, packet_info *pinfo, a dissection routine on belongs (this might be the most recently selected packet, or it might be the last packet in the file). */ void -follow_udp_stream_cb(GtkWidget *w, gpointer data _U_) +follow_udp_stream_cb(GtkWidget *w _U_, gpointer data _U_) { - GtkWidget *filter_te; + GtkWidget *filter_te, *filter_cm; gchar *follow_filter; const gchar *previous_filter; int filter_out_filter_len, previous_filter_len; @@ -124,7 +125,8 @@ follow_udp_stream_cb(GtkWidget *w, gpointer data _U_) } /* Set the display filter entry accordingly */ - filter_te = g_object_get_data(G_OBJECT(w), E_DFILTER_TE_KEY); + filter_cm = g_object_get_data(G_OBJECT(top_level), E_DFILTER_CM_KEY); + filter_te = gtk_bin_get_child(GTK_BIN(filter_cm)); /* needed in follow_filter_out_stream(), is there a better way? */ follow_info->filter_te = filter_te; diff --git a/gtk/keys.h b/gtk/keys.h index bdbbfee2c6..ac294fa5f7 100644 --- a/gtk/keys.h +++ b/gtk/keys.h @@ -28,6 +28,7 @@ /** @file * Various keys for g_object_set_data(). */ +#define E_DFILTER_CM_KEY "display_filter_combo" #define E_DFILTER_TE_KEY "display_filter_entry" #define E_RFILTER_TE_KEY "read_filter_te" diff --git a/gtk/main_filter_toolbar.h b/gtk/main_filter_toolbar.h index 52cd1e0cc2..e85aba6163 100644 --- a/gtk/main_filter_toolbar.h +++ b/gtk/main_filter_toolbar.h @@ -26,7 +26,6 @@ #ifndef __MAIN_FILTER_TOOLBAR_H__ #define __MAIN_FILTER_TOOLBAR_H__ -#define E_DFILTER_CM_KEY "display_filter_combo" #define E_DFILTER_APPLY_KEY "display_filter_apply" #define E_DFILTER_CLEAR_KEY "display_filter_clear" diff --git a/gtk/menus.c b/gtk/menus.c index 54d3480cc7..d4fce32905 100644 --- a/gtk/menus.c +++ b/gtk/menus.c @@ -112,6 +112,22 @@ #include <igemacintegration/gtkosxapplication.h> #endif +static int initialize = TRUE; +#ifdef MAIN_MENU_USE_UIMANAGER + GtkActionGroup *main_menu_bar_action_group; +#else +static GtkItemFactory *main_menu_factory = NULL; +#endif /* MAIN_MENU_USE_UIMANAGER */ +static GtkUIManager *ui_manager_main_menubar = NULL; +static GtkUIManager *ui_manager_packet_list_heading = NULL; +static GtkUIManager *ui_manager_packet_list_menu = NULL; +static GtkUIManager *ui_manager_tree_view_menu = NULL; +static GtkUIManager *ui_manager_bytes_menu = NULL; +static GtkUIManager *ui_manager_statusbar_profiles_menu = NULL; +static GSList *popup_menu_list = NULL; + +static GtkAccelGroup *grp; + typedef struct _menu_item { char *name; gint group; @@ -456,6 +472,19 @@ goto_conversation_frame(gboolean dir) g_free(filter); } +#ifdef MAIN_MENU_USE_UIMANAGER +static void +goto_next_frame_conversation_cb(GtkAction *action _U_, gpointer user_data) +{ + goto_conversation_frame(FALSE); +} + +static void +goto_previous_frame_conversation_cb(GtkAction *action _U_, gpointer user_data) +{ + goto_conversation_frame(TRUE); +} +#else static void goto_next_frame_conversation_cb(GtkWidget *w _U_, gpointer d _U_) { @@ -467,78 +496,93 @@ goto_previous_frame_conversation_cb(GtkWidget *w _U_, gpointer d _U_) { goto_conversation_frame(TRUE); } +#endif /* MAIN_MENU_USE_UIMANAGER */ + + /*Apply a filter */ static void -tree_view_menu_apply_selected_cb(GtkWidget *widget, gpointer user_data) +tree_view_menu_apply_selected_cb(GtkAction *action _U_, gpointer user_data) { + GtkWidget *widget = gtk_ui_manager_get_widget(ui_manager_tree_view_menu, "/TreeViewPopup/ApplyAsFilter/Selected"); match_selected_ptree_cb( widget , user_data, MATCH_SELECTED_REPLACE|MATCH_SELECTED_APPLY_NOW); } static void -tree_view_menu_apply_not_selected_cb(GtkWidget *widget, gpointer user_data) +tree_view_menu_apply_not_selected_cb(GtkAction *action _U_, gpointer user_data) { + GtkWidget *widget = gtk_ui_manager_get_widget(ui_manager_tree_view_menu, "/TreeViewPopup/ApplyAsFilter/NotSelected"); match_selected_ptree_cb( widget , user_data, MATCH_SELECTED_NOT|MATCH_SELECTED_APPLY_NOW); } static void -tree_view_menu_apply_and_selected_cb(GtkWidget *widget, gpointer user_data) +tree_view_menu_apply_and_selected_cb(GtkAction *action _U_, gpointer user_data) { + GtkWidget *widget = gtk_ui_manager_get_widget(ui_manager_tree_view_menu, "/TreeViewPopup/ApplyAsFilter/AndSelected"); match_selected_ptree_cb( widget , user_data, MATCH_SELECTED_AND|MATCH_SELECTED_APPLY_NOW); } static void -tree_view_menu_apply_or_selected_cb(GtkWidget *widget, gpointer user_data) +tree_view_menu_apply_or_selected_cb(GtkAction *action _U_, gpointer user_data) { + GtkWidget *widget = gtk_ui_manager_get_widget(ui_manager_tree_view_menu, "/TreeViewPopup/ApplyAsFilter/OrSelected"); match_selected_ptree_cb( widget , user_data, MATCH_SELECTED_OR|MATCH_SELECTED_APPLY_NOW); } static void -tree_view_menu_apply_and_not_selected_cb(GtkWidget *widget, gpointer user_data) +tree_view_menu_apply_and_not_selected_cb(GtkAction *action _U_, gpointer user_data) { + GtkWidget *widget = gtk_ui_manager_get_widget(ui_manager_tree_view_menu, "/TreeViewPopup/ApplyAsFilter/AndNotSelected"); match_selected_ptree_cb( widget , user_data, MATCH_SELECTED_AND_NOT|MATCH_SELECTED_APPLY_NOW); } static void -tree_view_menu_apply_or_not_selected_cb(GtkWidget *widget, gpointer user_data) +tree_view_menu_apply_or_not_selected_cb(GtkAction *action _U_, gpointer user_data) { + GtkWidget *widget = gtk_ui_manager_get_widget(ui_manager_tree_view_menu, "/TreeViewPopup/ApplyAsFilter/OrNotSelected"); match_selected_ptree_cb( widget , user_data,MATCH_SELECTED_OR_NOT|MATCH_SELECTED_APPLY_NOW); } /* Prepare a filter */ static void -tree_view_menu_prepare_selected_cb(GtkWidget *widget, gpointer user_data) +tree_view_menu_prepare_selected_cb(GtkAction *action _U_, gpointer user_data) { + GtkWidget *widget = gtk_ui_manager_get_widget(ui_manager_tree_view_menu, "/TreeViewPopup/PrepareaFilter/Selected"); match_selected_ptree_cb( widget , user_data, MATCH_SELECTED_REPLACE); } static void -tree_view_menu_prepare_not_selected_cb(GtkWidget *widget, gpointer user_data) +tree_view_menu_prepare_not_selected_cb(GtkAction *action _U_, gpointer user_data) { + GtkWidget *widget = gtk_ui_manager_get_widget(ui_manager_tree_view_menu, "/TreeViewPopup/PrepareaFilter/NotSelected"); match_selected_ptree_cb( widget , user_data, MATCH_SELECTED_NOT); } static void -tree_view_menu_prepare_and_selected_cb(GtkWidget *widget, gpointer user_data) +tree_view_menu_prepare_and_selected_cb(GtkAction *action _U_, gpointer user_data) { + GtkWidget *widget = gtk_ui_manager_get_widget(ui_manager_tree_view_menu, "/TreeViewPopup/PrepareaFilter/AndSelected"); match_selected_ptree_cb( widget , user_data, MATCH_SELECTED_AND); } static void -tree_view_menu_prepare_or_selected_cb(GtkWidget *widget, gpointer user_data) +tree_view_menu_prepare_or_selected_cb(GtkAction *action _U_, gpointer user_data) { + GtkWidget *widget = gtk_ui_manager_get_widget(ui_manager_tree_view_menu, "/TreeViewPopup/PrepareaFilter/OrSelected"); match_selected_ptree_cb( widget , user_data, MATCH_SELECTED_OR); } static void -tree_view_menu_prepare_and_not_selected_cb(GtkWidget *widget, gpointer user_data) +tree_view_menu_prepare_and_not_selected_cb(GtkAction *action _U_, gpointer user_data) { + GtkWidget *widget = gtk_ui_manager_get_widget(ui_manager_tree_view_menu, "/TreeViewPopup/PrepareaFilter/AndNotSelected"); match_selected_ptree_cb( widget , user_data, MATCH_SELECTED_AND_NOT); } static void -tree_view_menu_prepare_or_not_selected_cb(GtkWidget *widget, gpointer user_data) +tree_view_menu_prepare_or_not_selected_cb(GtkAction *action _U_, gpointer user_data) { + GtkWidget *widget = gtk_ui_manager_get_widget(ui_manager_tree_view_menu, "/TreeViewPopup/PrepareaFilter/OrNotSelected"); match_selected_ptree_cb( widget , user_data, MATCH_SELECTED_OR_NOT); } @@ -547,51 +591,51 @@ tree_view_menu_prepare_or_not_selected_cb(GtkWidget *widget, gpointer user_data) guint merge_id = 0; static void -copy_description_cb(GtkWidget *widget, gpointer user_data) +copy_description_cb(GtkAction *action _U_, gpointer user_data) { - copy_selected_plist_cb( widget , user_data, COPY_SELECTED_DESCRIPTION); + copy_selected_plist_cb( NULL /* widget _U_ */ , user_data, COPY_SELECTED_DESCRIPTION); } static void -copy_fieldname_cb(GtkWidget *widget, gpointer user_data) +copy_fieldname_cb(GtkAction *action _U_, gpointer user_data) { - copy_selected_plist_cb( widget , user_data, COPY_SELECTED_FIELDNAME); + copy_selected_plist_cb( NULL /* widget _U_ */ , user_data, COPY_SELECTED_FIELDNAME); } static void -copy_value_cb(GtkWidget *widget, gpointer user_data) +copy_value_cb(GtkAction *action _U_, gpointer user_data) { - copy_selected_plist_cb( widget , user_data, COPY_SELECTED_VALUE); + copy_selected_plist_cb( NULL /* widget _U_ */ , user_data, COPY_SELECTED_VALUE); } static void -copy_as_filter_cb(GtkWidget *widget, gpointer user_data) +copy_as_filter_cb(GtkAction *action _U_, gpointer user_data) { - match_selected_ptree_cb( widget , user_data, MATCH_SELECTED_REPLACE|MATCH_SELECTED_COPY_ONLY); + match_selected_ptree_cb( NULL /* widget _U_ */ , user_data, MATCH_SELECTED_REPLACE|MATCH_SELECTED_COPY_ONLY); } static void -set_reftime_cb(GtkWidget *widget, gpointer user_data) +set_reftime_cb(GtkAction *action _U_, gpointer user_data) { - reftime_frame_cb( widget , user_data, REFTIME_TOGGLE); + reftime_frame_cb( NULL /* widget _U_ */ , user_data, REFTIME_TOGGLE); } static void -find_next_ref_time_cb(GtkWidget *widget, gpointer user_data) +find_next_ref_time_cb(GtkAction *action _U_, gpointer user_data) { - reftime_frame_cb( widget , user_data, REFTIME_FIND_NEXT); + reftime_frame_cb( NULL /* widget _U_ */ , user_data, REFTIME_FIND_NEXT); } static void -find_previous_ref_time_cb(GtkWidget *widget, gpointer user_data) +find_previous_ref_time_cb(GtkAction *action _U_, gpointer user_data) { - reftime_frame_cb( widget , user_data, REFTIME_FIND_PREV); + reftime_frame_cb( NULL /* widget _U_ */ , user_data, REFTIME_FIND_PREV); } static void -menus_prefs_cb(GtkWidget *widget, gpointer user_data) +menus_prefs_cb(GtkAction *action _U_, gpointer user_data) { - prefs_page_cb( widget , user_data, PREFS_PAGE_USER_INTERFACE); + prefs_page_cb( NULL /* widget _U_ */ , user_data, PREFS_PAGE_USER_INTERFACE); } static void @@ -2025,21 +2069,6 @@ static GtkItemFactoryEntry menu_items[] = static int nmenu_items = sizeof(menu_items) / sizeof(menu_items[0]); #endif /* MAIN_MENU_USE_UIMANAGER */ -static int initialize = TRUE; -#ifdef MAIN_MENU_USE_UIMANAGER - GtkActionGroup *main_menu_bar_action_group; -#else -static GtkItemFactory *main_menu_factory = NULL; -#endif -static GtkUIManager *ui_manager_main_menubar = NULL; -static GtkUIManager *ui_manager_packet_list_heading = NULL; -static GtkUIManager *ui_manager_packet_list_menu = NULL; -static GtkUIManager *ui_manager_tree_view_menu = NULL; -static GtkUIManager *ui_manager_bytes_menu = NULL; -static GtkUIManager *ui_manager_statusbar_profiles_menu = NULL; -static GSList *popup_menu_list = NULL; - -static GtkAccelGroup *grp; static void select_bytes_view_cb (GtkRadioAction *action, GtkRadioAction *current _U_, gpointer user_data _U_) |