diff options
Diffstat (limited to 'gtk/gtkapplication-quartz.c')
-rw-r--r-- | gtk/gtkapplication-quartz.c | 31 |
1 files changed, 27 insertions, 4 deletions
diff --git a/gtk/gtkapplication-quartz.c b/gtk/gtkapplication-quartz.c index 8d2bea97e0..2f14ee7ef7 100644 --- a/gtk/gtkapplication-quartz.c +++ b/gtk/gtkapplication-quartz.c @@ -21,6 +21,7 @@ #include "config.h" #include "gtkapplicationprivate.h" +#include "gtkbuilder.h" #import <Cocoa/Cocoa.h> typedef struct @@ -88,6 +89,8 @@ gtk_application_impl_quartz_startup (GtkApplicationImpl *impl, gboolean register_session) { GtkApplicationImplQuartz *quartz = (GtkApplicationImplQuartz *) impl; + GSimpleActionGroup *gtkinternal; + GMenuModel *app_menu; if (register_session) [NSApp setDelegate: [[GtkApplicationQuartzDelegate alloc] initWithImpl:quartz]]; @@ -95,10 +98,30 @@ gtk_application_impl_quartz_startup (GtkApplicationImpl *impl, quartz->muxer = gtk_action_muxer_new (); gtk_action_muxer_set_parent (quartz->muxer, gtk_application_get_action_muxer (impl->application)); - /* app menu must come first so that we always see index '0' in - * 'combined' as being the app menu. - */ - gtk_application_impl_set_app_menu (impl, gtk_application_get_app_menu (impl->application)); + /* Add the default accels */ + gtk_application_add_accelerator (impl->application, "<Primary>comma", "app.preferences", NULL); + gtk_application_add_accelerator (impl->application, "<Primary><Alt>h", "gtkinternal.hide-others", NULL); + gtk_application_add_accelerator (impl->application, "<Primary>h", "gtkinternal.hide", NULL); + gtk_application_add_accelerator (impl->application, "<Primary>q", "app.quit", NULL); + + app_menu = gtk_application_get_app_menu (impl->application); + if (app_menu == NULL) + { + GtkBuilder *builder; + + /* If the user didn't fill in their own menu yet, add ours. + * + * The fact that we do this here ensures that we will always have the + * app menu at index 0 in 'combined'. + */ + builder = gtk_builder_new_from_resource ("/org/gtk/libgtk/gtkapplication-quartz.ui"); + gtk_application_set_app_menu (impl->application, G_MENU_MODEL (gtk_builder_get_object (builder, "app-menu"))); + g_object_unref (builder); + } + else + gtk_application_impl_set_app_menu (impl, app_menu); + + /* This may or may not add an item to 'combined' */ gtk_application_impl_set_menubar (impl, gtk_application_get_menubar (impl->application)); /* OK. Now put it in the menu. */ |