Index: evince/shell/ev-application.c =================================================================== --- evince.orig/shell/ev-application.c 2013-12-17 00:51:05.327939000 +0100 +++ evince/shell/ev-application.c 2013-12-17 01:01:07.919110765 +0100 @@ -1028,18 +1028,15 @@ } static void -ev_application_startup (GApplication *gapplication) +ev_application_setup_app_menu (EvApplication *application) { const GActionEntry app_menu_actions[] = { { "help", app_help_cb, NULL, NULL, NULL }, }; - EvApplication *application = EV_APPLICATION (gapplication); GtkBuilder *builder; GError *error = NULL; - G_APPLICATION_CLASS (ev_application_parent_class)->startup (gapplication); - g_action_map_add_action_entries (G_ACTION_MAP (application), app_menu_actions, G_N_ELEMENTS (app_menu_actions), application); @@ -1051,6 +1048,27 @@ gtk_application_set_app_menu (GTK_APPLICATION (application), G_MENU_MODEL (gtk_builder_get_object (builder, "appmenu"))); g_object_unref (builder); + +} + +static void +ev_application_startup (GApplication *gapplication) +{ + GtkSettings *gtk_settings; + gboolean show_app_menu, show_menubar; + + G_APPLICATION_CLASS (ev_application_parent_class)->startup (gapplication); + + gtk_settings = gtk_settings_get_for_screen (gdk_screen_get_default ()); + g_object_get (G_OBJECT (gtk_settings), + "gtk-shell-shows-app-menu", + &show_app_menu, + "gtk-shell-shows-app-menu", &show_app_menu, + "gtk-shell-shows-menubar", &show_menubar, + NULL); + + if (show_app_menu && !show_menubar) + ev_application_setup_app_menu (EV_APPLICATION (gapplication)); } static void Index: evince/shell/ev-window.c =================================================================== --- evince.orig/shell/ev-window.c 2013-12-17 00:51:05.327939000 +0100 +++ evince/shell/ev-window.c 2013-12-17 01:02:09.531112953 +0100 @@ -127,6 +127,7 @@ EvChrome chrome; GtkWidget *main_box; + GtkWidget *menubar; GtkWidget *toolbar; GtkWidget *hpaned; GtkWidget *view_box; @@ -2745,6 +2746,17 @@ action_name, GTK_UI_MANAGER_MENUITEM, FALSE); + + if (ev_window->priv->menubar) { + gtk_ui_manager_add_ui (ev_window->priv->ui_manager, + ev_window->priv->recent_ui_id, + "/MainMenu/FileMenu/RecentFilesMenu/RecentFiles", + label, + action_name, + GTK_UI_MANAGER_MENUITEM, + FALSE); + } + g_free (action_name); g_free (label); if (icon != NULL) @@ -4744,6 +4756,16 @@ GTK_UI_MANAGER_MENUITEM, FALSE); + if (window->priv->menubar) { + gtk_ui_manager_add_ui (window->priv->ui_manager, + window->priv->bookmarks_ui_id, + "/MainMenu/BookmarksMenu/BookmarksItems", + gtk_action_get_label (action), + gtk_action_get_name (action), + GTK_UI_MANAGER_MENUITEM, + FALSE); + } + g_object_unref (action); } @@ -5026,6 +5048,12 @@ } static void +ev_window_cmd_help_contents (GtkAction *action, EvWindow *ev_window) +{ + ev_application_show_help (EV_APP, NULL, NULL); +} + +static void ev_window_cmd_help_about (GtkAction *action, EvWindow *ev_window) { const char *authors[] = { @@ -6010,7 +6038,12 @@ /* Normal items */ static const GtkActionEntry entries[] = { + { "File", NULL, N_("_File") }, + { "Edit", NULL, N_("_Edit") }, + { "View", NULL, N_("_View") }, + { "Go", NULL, N_("_Go") }, { "Bookmarks", NULL, N_("_Bookmarks") }, + { "Help", NULL, N_("_Help") }, { "RecentFiles", NULL, N_("_Recent") }, /* File menu */ @@ -6086,6 +6119,9 @@ N_("Add a bookmark for the current page"), G_CALLBACK (ev_window_cmd_bookmarks_add) }, + /* Help menu */ + { "HelpContents", GTK_STOCK_ABOUT, N_("_Contents"), NULL, NULL, + G_CALLBACK (ev_window_cmd_help_contents) }, { "HelpAbout", GTK_STOCK_ABOUT, N_("_About"), NULL, NULL, G_CALLBACK (ev_window_cmd_help_about) }, @@ -7280,6 +7316,8 @@ GtkAccelGroup *accel_group; GtkCssProvider *css_provider; GError *error = NULL; + GtkSettings *gtk_settings; + gboolean show_app_menu, show_menubar; GtkWidget *sidebar_widget; GtkWidget *overlay; GObject *mpkeys; @@ -7405,6 +7443,23 @@ GTK_STYLE_PROVIDER_PRIORITY_APPLICATION); g_object_unref (css_provider); + gtk_settings = gtk_settings_get_for_screen (gdk_screen_get_default ()); + g_object_get (G_OBJECT (gtk_settings), + "gtk-shell-shows-app-menu", &show_app_menu, + "gtk-shell-shows-menubar", &show_menubar, + NULL); + g_object_unref (gtk_settings); + + if (show_menubar || !show_app_menu) { + ev_window->priv->menubar = + gtk_ui_manager_get_widget (ev_window->priv->ui_manager, + "/MainMenu"); + gtk_box_pack_start (GTK_BOX (ev_window->priv->main_box), + ev_window->priv->menubar, + FALSE, FALSE, 0); + } + + ev_window->priv->recent_manager = gtk_recent_manager_get_default (); ev_window->priv->recent_action_group = NULL; ev_window->priv->recent_ui_id = 0; Index: evince/shell/evince-ui.xml =================================================================== --- evince.orig/shell/evince-ui.xml 2013-12-17 00:51:05.327939000 +0100 +++ evince/shell/evince-ui.xml 2013-12-17 00:57:32.070128750 +0100 @@ -1,4 +1,73 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +