From 8b2440b23466b2b9e30a92122b4ed9496484ae54 Mon Sep 17 00:00:00 2001 From: Lars Uebernickel Date: Thu, 30 Jan 2014 15:13:38 +0100 Subject: Add traditional menu bar This menu bar will only be shown when the desktop requests this through the gtk-shell-shows-app-menu and gtk-shell-shows-menubar settings. The view and action menus are hidden when the menubar is shown. https://bugzilla.gnome.org/show_bug.cgi?id=736419 Index: evince-3.22.1/shell/ev-application.c =================================================================== --- evince-3.22.1.orig/shell/ev-application.c +++ evince-3.22.1/shell/ev-application.c @@ -44,12 +44,15 @@ #include "ev-media-player-keys.h" #endif /* ENABLE_DBUS */ +extern gboolean in_desktop (const gchar *name); + struct _EvApplication { GtkApplication base_instance; gchar *uri; gchar *dot_dir; + GMenu *bookmarks_menu; #ifdef ENABLE_DBUS EvEvinceApplication *skeleton; @@ -1040,6 +1043,26 @@ app_about_cb (GSimpleAction *action, } static void +ev_application_update_bookmarks_menu (EvApplication *application) +{ + GtkWindow *window; + + /* The bookmarks menu has two sections: the first one contains + * the "Add Bookmark" menu item and the second one is filled + * with the active window's bookmarks. + */ + + if (g_menu_model_get_n_items (G_MENU_MODEL (application->bookmarks_menu)) == 2) + g_menu_remove (application->bookmarks_menu, 1); + + window = gtk_application_get_active_window (GTK_APPLICATION (application)); + if (window) { + g_menu_append_section (application->bookmarks_menu, NULL, + ev_window_get_bookmarks_menu (EV_WINDOW (window))); + } +} + +static void ev_application_startup (GApplication *gapplication) { const GActionEntry app_menu_actions[] = { @@ -1099,6 +1122,25 @@ ev_application_startup (GApplication *ga app_menu_actions, G_N_ELEMENTS (app_menu_actions), application); + if (in_desktop ("Unity")) { + GtkBuilder *builder; + GError *error = NULL; + + builder = gtk_builder_new (); + gtk_builder_add_from_resource (builder, "/org/gnome/evince/gtk/traditional-menus.ui", &error); + g_assert_no_error (error); + + gtk_application_set_app_menu (GTK_APPLICATION (application), NULL); + gtk_application_set_menubar (GTK_APPLICATION (application), + G_MENU_MODEL (gtk_builder_get_object (builder, "menubar"))); + + application->bookmarks_menu = G_MENU (gtk_builder_get_object (builder, "bookmarks")); + g_signal_connect_swapped (application, "notify::active-window", + G_CALLBACK (ev_application_update_bookmarks_menu), application); + ev_application_update_bookmarks_menu (application); + g_object_unref (builder); + } + for (it = action_accels; it[0]; it += g_strv_length ((gchar **)it) + 1) gtk_application_set_accels_for_action (GTK_APPLICATION (application), it[0], &it[1]); } Index: evince-3.22.1/shell/ev-application.h =================================================================== --- evince-3.22.1.orig/shell/ev-application.h +++ evince-3.22.1/shell/ev-application.h @@ -75,6 +75,8 @@ void ev_application_show_he GdkScreen *screen, const char *topic); +gboolean ev_application_has_traditional_menus (EvApplication *application); + G_END_DECLS #endif /* !EV_APPLICATION_H */ Index: evince-3.22.1/shell/evince.gresource.xml.in =================================================================== --- evince-3.22.1.orig/shell/evince.gresource.xml.in +++ evince-3.22.1/shell/evince.gresource.xml.in @@ -21,5 +21,6 @@ @EVINCE_CSS@ thumbnail-frame.png evince-menus.ui + traditional-menus.ui Index: evince-3.22.1/shell/ev-window.c =================================================================== --- evince-3.22.1.orig/shell/ev-window.c +++ evince-3.22.1/shell/ev-window.c @@ -634,6 +634,8 @@ update_chrome_visibility (EvWindow *wind set_widget_visibility (priv->toolbar, toolbar); set_widget_visibility (priv->sidebar, sidebar); + + gtk_application_window_set_show_menubar (GTK_APPLICATION_WINDOW (window), !presentation); } static void @@ -7075,7 +7077,6 @@ ev_window_new (void) ev_window = GTK_WIDGET (g_object_new (EV_TYPE_WINDOW, "type", GTK_WINDOW_TOPLEVEL, "application", g_application_get_default (), - "show-menubar", FALSE, NULL)); return ev_window; Index: evince-3.22.1/shell/Makefile.am =================================================================== --- evince-3.22.1.orig/shell/Makefile.am +++ evince-3.22.1/shell/Makefile.am @@ -174,7 +174,8 @@ EXTRA_DIST = \ evince-icon.rc \ evince.gresource.xml.in \ ev-gdbus.xml \ - ev-daemon-gdbus.xml + ev-daemon-gdbus.xml \ + traditional-menus.ui GRESOURCE_XML_IN_FILES = evince.gresource.xml.in GRESOURCE_XML_FILE = $(GRESOURCE_XML_IN_FILES:.xml.in=.xml) Index: evince-3.22.1/shell/traditional-menus.ui =================================================================== --- /dev/null +++ evince-3.22.1/shell/traditional-menus.ui @@ -0,0 +1,234 @@ + + + + + + _File +
+ + _Open… + win.open + <Ctrl>O + + + Op_en a Copy + win.open-copy + <Ctrl>N + +
+
+ + _Save a Copy… + win.save-copy + <Ctrl>S + + + Send _To… + win.send-to + + + Open Containing _Folder + win.open-containing-folder + + + _Print… + win.print + <Ctrl>P + +
+
+ + P_roperties… + win.show-properties + <Alt>Return + +
+ + + + +
+ + _Close + win.close + <Ctrl>W + +
+
+ + _Edit +
+ + _Copy + win.copy + <Ctrl>C + + + Select _All + win.select-all + <Ctrl>A + +
+
+ + _Find + win.find + <Ctrl>F + +
+
+ + Rotate _Left + win.rotate-left + <Ctrl>Left + + + Rotate _Right + win.rotate-right + <Ctrl>Right + +
+
+ + Save Current Settings as _Default + win.save-settings + <Ctrl>T + +
+
+ + _View +
+ + _Continuous + win.continuous + + + _Dual + win.dual-page + +
+
+ + Side _Pane + win.show-side-pane + F9 + +
+
+ + _Fullscreen + win.fullscreen + F11 + + + Pre_sentation + win.presentation + F5 + +
+
+ + Zoom _In + win.zoom-in + <Ctrl>plus + + + Zoom _Out + win.zoom-out + <Ctrl>minus + +
+
+ + _Odd Pages Left + win.dual-odd-left + + + _Inverted Colors + win.inverted-colors + <Ctrl>I + +
+
+ + _Reload + win.reload + <Ctrl>R + +
+
+ + _Go +
+ + _Previous Page + win.go-previous-page + p + + + _Next Page + win.go-next-page + n + +
+
+ + _First Page + win.go-first-page + <Ctrl>Home + + + _Last Page + win.go-last-page + <Ctrl>End + +
+
+ + _Bookmarks +
+ + _Add Bookmark + win.add-bookmark + +
+
+ + _Help +
+ + _Keyboard Shortcuts + win.show-help-overlay + + + _Help + app.help + F1 + + + _About + app.about + +
+
+
+
Index: evince-3.22.1/po/POTFILES.in =================================================================== --- evince-3.22.1.orig/po/POTFILES.in +++ evince-3.22.1/po/POTFILES.in @@ -65,4 +65,5 @@ shell/ev-zoom-action.c shell/main.c [type: gettext/glade]shell/evince-menus.ui [type: gettext/glade]shell/help-overlay.ui +[type: gettext/glade]shell/traditional-menus.ui evince.appdata.xml.in