aboutsummaryrefslogtreecommitdiffstats
path: root/gtk
diff options
context:
space:
mode:
authorStephen Fisher <steve@stephen-fisher.com>2008-10-27 04:40:54 +0000
committerStephen Fisher <steve@stephen-fisher.com>2008-10-27 04:40:54 +0000
commitb8b74f901ddcf364155fefdd62229b26fd945e7f (patch)
tree412bd2077f1fc4c2df6dcf767e3f637ff6f6c0e5 /gtk
parent05b7f7314e821799f65ecc0c8fabb12ffc2f48e3 (diff)
Add About, Preferences and a working Quit option to the OS X application menu
when ige mac integration is used. svn path=/trunk/; revision=26569
Diffstat (limited to 'gtk')
-rw-r--r--gtk/main.c17
-rw-r--r--gtk/main_menu.c39
2 files changed, 45 insertions, 11 deletions
diff --git a/gtk/main.c b/gtk/main.c
index 7798825590..a29e708766 100644
--- a/gtk/main.c
+++ b/gtk/main.c
@@ -174,10 +174,6 @@
#include <epan/crypt/airpdcap_ws.h>
#endif
-#ifdef HAVE_IGE_MAC_INTEGRATION
-#include <ige-mac-menu.h>
-#endif
-
/*
* Files under personal and global preferences directories in which
* GTK settings for Wireshark are stored.
@@ -3154,15 +3150,14 @@ create_main_window (gint pl_size, gint tv_size, gint bv_size, e_prefs *prefs)
/* Menu bar */
menubar = main_menu_new(&accel);
+
#ifdef HAVE_IGE_MAC_INTEGRATION
- if(prefs->gui_macosx_style) {
- ige_mac_menu_set_menu_bar(GTK_MENU_SHELL(menubar));
- ige_mac_menu_set_global_key_handler_enabled(TRUE);
- } else {
+ /* MacOS X native menus are created and displayed by main_menu_new() */
+ if(!prefs->gui_macosx_style) {
#endif
- gtk_window_add_accel_group(GTK_WINDOW(top_level), accel);
- gtk_widget_show(menubar);
-#ifdef HAVE_IGE_MAC_INTEGRATION
+ gtk_window_add_accel_group(GTK_WINDOW(top_level), accel);
+ gtk_widget_show(menubar);
+#ifdef HAVE_IGE_MAC_INTEGRATION;
}
#endif
diff --git a/gtk/main_menu.c b/gtk/main_menu.c
index e85ecf4cc8..0a04a474c7 100644
--- a/gtk/main_menu.c
+++ b/gtk/main_menu.c
@@ -90,6 +90,10 @@
#include "gtk/main_toolbar.h"
#include "gtk/main_welcome.h"
+#ifdef HAVE_IGE_MAC_INTEGRATION
+#include <ige-mac-menu.h>
+#endif
+
typedef struct _menu_item {
char *name;
gint group;
@@ -1035,6 +1039,10 @@ static GtkAccelGroup *grp;
GtkWidget *
main_menu_new(GtkAccelGroup ** table) {
GtkWidget *menubar;
+#ifdef HAVE_IGE_MAC_INTEGRATION
+ GtkWidget *quit_item, *about_item, *preferences_item;
+ IgeMacMenuGroup *group;
+#endif
grp = gtk_accel_group_new();
@@ -1043,6 +1051,37 @@ main_menu_new(GtkAccelGroup ** table) {
menubar = main_menu_factory->widget;
+#ifdef HAVE_IGE_MAC_INTEGRATION
+ if(prefs.gui_macosx_style) {
+ ige_mac_menu_set_menu_bar(GTK_MENU_SHELL(menubar));
+ ige_mac_menu_set_global_key_handler_enabled(TRUE);
+
+ /* Create menu items to populate the application menu with. We have to
+ * do this because we are still using the old GtkItemFactory API for
+ * the main menu. */
+ group = ige_mac_menu_add_app_menu_group();
+ about_item = gtk_menu_item_new_with_label("About");
+ g_signal_connect(about_item, "activate", G_CALLBACK(about_wireshark_cb),
+ NULL);
+ ige_mac_menu_add_app_menu_item(group, GTK_MENU_ITEM(about_item), NULL);
+
+ group = ige_mac_menu_add_app_menu_group();
+ preferences_item = gtk_menu_item_new_with_label("Preferences");
+ g_signal_connect(preferences_item, "activate", G_CALLBACK(prefs_cb),
+ NULL);
+ ige_mac_menu_add_app_menu_item(group, GTK_MENU_ITEM(preferences_item),
+ NULL);
+ }
+
+ /* The quit item in the application menu shows up whenever ige mac
+ * integration is enabled, even if the OS X UI style in Wireshark isn't
+ * turned on. */
+ quit_item = gtk_menu_item_new_with_label("Quit");
+ g_signal_connect(quit_item, "activate", G_CALLBACK(file_quit_cmd_cb),
+ NULL);
+ ige_mac_menu_set_quit_menu_item(GTK_MENU_ITEM(quit_item));
+#endif
+
if (table)
*table = grp;