]> www.fi.muni.cz Git - evince.git/blobdiff - shell/ev-window.c
Dual mode places even pages to the left. Fix for the bug #309393.
[evince.git] / shell / ev-window.c
index fe2d0a873dda0f3f03b1e6b9e256489e91f98daa..7e6a1bc925d7efcf78979b2a1e55d18d7c0b54d9 100644 (file)
@@ -309,8 +309,8 @@ update_action_sensitivity (EvWindow *ev_window)
 
         /* Go menu */
        if (document) {
-               set_action_sensitive (ev_window, "GoPreviousPage", ev_view_can_previous_page (view));
-               set_action_sensitive (ev_window, "GoNextPage", ev_view_can_next_page (view));
+               set_action_sensitive (ev_window, "GoPreviousPage", page > 0);
+               set_action_sensitive (ev_window, "GoNextPage", page < n_pages - 1);
                set_action_sensitive (ev_window, "GoFirstPage", page > 0);
                set_action_sensitive (ev_window, "GoLastPage", page < n_pages - 1);
        } else {
@@ -625,11 +625,12 @@ setup_document_from_metadata (EvWindow *window)
 {
        char *uri = window->priv->uri;
        GValue page = { 0, };
+       gint new_page;
 
-       /* Page */
        if (uri && ev_metadata_manager_get (uri, "page", &page, TRUE)) {
+               new_page = CLAMP (g_value_get_int (&page), 0, ev_page_cache_get_n_pages (window->priv->page_cache) - 1);
                ev_page_cache_set_current_page (window->priv->page_cache,
-                                               g_value_get_int (&page));
+                                               new_page);
        }
 }
 
@@ -750,14 +751,14 @@ setup_view_from_metadata (EvWindow *window)
 
        /* Presentation */
        if (ev_metadata_manager_get (uri, "presentation", &presentation, FALSE)) {
-               if (g_value_get_boolean (&presentation)) {
+               if (g_value_get_boolean (&presentation) && uri) {
                        ev_window_run_presentation (window);
                }
        }
 
        /* Fullscreen */
        if (ev_metadata_manager_get (uri, "fullscreen", &fullscreen, FALSE)) {
-               if (g_value_get_boolean (&fullscreen)) {
+               if (g_value_get_boolean (&fullscreen) && uri) {
                        ev_window_run_fullscreen (window);
                }
        }
@@ -2089,7 +2090,7 @@ ev_window_cmd_view_reload (GtkAction *action, EvWindow *ev_window)
        ev_window_open_uri (ev_window, uri);
 
        /* In case the number of pages in the document has changed. */
-       page = CLAMP (page, 0, ev_page_cache_get_n_pages (ev_window->priv->page_cache));
+       page = CLAMP (page, 0, ev_page_cache_get_n_pages (ev_window->priv->page_cache) - 1);
 
        ev_page_cache_set_current_page (ev_window->priv->page_cache, page);
 
@@ -2486,6 +2487,9 @@ view_menu_popup_cb (EvView         *view,
        gboolean   show_external = FALSE;
        gboolean   show_internal = FALSE;
        GtkAction *action;
+
+       if (ev_view_get_presentation (EV_VIEW (ev_window->priv->view)))
+               return FALSE;
        
        if (ev_window->priv->link)
                g_object_unref (ev_window->priv->link);
@@ -2529,7 +2533,7 @@ view_menu_popup_cb (EvView         *view,
        gtk_menu_popup (GTK_MENU (popup), NULL, NULL,
                        NULL, NULL,
                        3, gtk_get_current_event_time ());
-       return TRUE;
+       return FALSE;
 }
 
 static void