]> www.fi.muni.cz Git - evince.git/blobdiff - shell/ev-window.c
Take all pages in consideration, not just current one
[evince.git] / shell / ev-window.c
index 870818ad4841816ac0633285ae66d1db89d07ebf..fa4c87735c5c0517b4b08a18288dbb39c124c2cf 100644 (file)
@@ -602,6 +602,18 @@ update_document_mode (EvWindow *window, EvDocumentMode mode)
        }
 }
 
+static void
+update_sidebar_visibility (EvWindow *window)
+{
+       char *uri = window->priv->uri;
+       GValue sidebar_visibility = { 0, };
+
+       if (uri && ev_metadata_manager_get (uri, "sidebar_visibility", &sidebar_visibility)) {
+               set_widget_visibility (window->priv->sidebar,
+                                      g_value_get_boolean (&sidebar_visibility));
+       }
+}
+
 static void
 setup_document_from_metadata (EvWindow *window)
 {
@@ -615,6 +627,40 @@ setup_document_from_metadata (EvWindow *window)
        }
 }
 
+static void
+setup_sidebar_from_metadata (EvWindow *window, EvDocument *document)
+{
+       char *uri = window->priv->uri;
+       GtkWidget *sidebar = window->priv->sidebar;
+       GtkWidget *links = window->priv->sidebar_links;
+       GtkWidget *thumbs = window->priv->sidebar_thumbs;
+       GValue sidebar_size = { 0, };
+       GValue sidebar_page = { 0, };
+
+       if (ev_metadata_manager_get (uri, "sidebar_size", &sidebar_size)) {
+               gtk_paned_set_position (GTK_PANED (window->priv->hpaned),
+                                       g_value_get_int (&sidebar_size));
+       }
+
+       if (ev_metadata_manager_get (uri, "sidebar_page", &sidebar_page)) {
+               const char *page_id = g_value_get_string (&sidebar_page);
+
+               if (strcmp (page_id, "links") == 0) {
+                       ev_sidebar_set_page (EV_SIDEBAR (sidebar), links);
+               } else if (strcmp (page_id, "thumbnails")) {
+                       ev_sidebar_set_page (EV_SIDEBAR (sidebar), thumbs);
+               }
+       } else {
+               if (ev_sidebar_page_support_document (EV_SIDEBAR_PAGE (links), document)) {
+                       ev_sidebar_set_page (EV_SIDEBAR (sidebar), links);
+               } else if (ev_sidebar_page_support_document (EV_SIDEBAR_PAGE (thumbs), document)) {
+                       ev_sidebar_set_page (EV_SIDEBAR (sidebar), thumbs);
+               }
+       }
+
+       update_sidebar_visibility (window);
+}
+
 static void
 ev_window_setup_document (EvWindow *ev_window)
 {
@@ -657,6 +703,7 @@ ev_window_setup_document (EvWindow *ev_window)
        }
 
        setup_document_from_metadata (ev_window);
+       setup_sidebar_from_metadata (ev_window, document);
 }
 
 static void
@@ -875,18 +922,6 @@ ev_window_xfer_job_cb  (EvJobXfer *job,
        }               
 }
 
-static void
-update_sidebar_visibility (EvWindow *window)
-{
-       char *uri = window->priv->uri;
-       GValue sidebar_visibility = { 0, };
-
-       if (uri && ev_metadata_manager_get (uri, "sidebar_visibility", &sidebar_visibility)) {
-               set_widget_visibility (window->priv->sidebar,
-                                      g_value_get_boolean (&sidebar_visibility));
-       }
-}
-
 static void
 setup_view_from_metadata (EvWindow *window)
 {
@@ -905,8 +940,6 @@ setup_view_from_metadata (EvWindow *window)
        GValue presentation = { 0, };
        GValue fullscreen = { 0, };
        GValue rotation = { 0, };
-       GValue sidebar_size = { 0, };
-       GValue sidebar_page = { 0, };
 
        if (window->priv->uri == NULL) {
                return;
@@ -992,26 +1025,6 @@ setup_view_from_metadata (EvWindow *window)
                        }
                }
        }
-
-       /* Sidebar */
-       if (ev_metadata_manager_get (uri, "sidebar_size", &sidebar_size)) {
-               gtk_paned_set_position (GTK_PANED (window->priv->hpaned),
-                                       g_value_get_int (&sidebar_size));
-       }
-
-       if (ev_metadata_manager_get (uri, "sidebar_page", &sidebar_page)) {
-               const char *page_id = g_value_get_string (&sidebar_page);
-
-               if (strcmp (page_id, "links") == 0) {
-                       ev_sidebar_set_page (EV_SIDEBAR (window->priv->sidebar),
-                                            window->priv->sidebar_links);
-               } else if (strcmp (page_id, "thumbnails")) {
-                       ev_sidebar_set_page (EV_SIDEBAR (window->priv->sidebar),
-                                            window->priv->sidebar_thumbs);
-               }
-       }
-
-       update_sidebar_visibility (window);
 }
 
 void
@@ -2070,6 +2083,7 @@ ev_window_cmd_edit_toolbar (GtkAction *action, EvWindow *ev_window)
                                              GTK_STOCK_CLOSE,
                                              GTK_RESPONSE_CLOSE, 
                                              NULL);
+       gtk_dialog_set_default_response (GTK_DIALOG (dialog), GTK_RESPONSE_CLOSE);
        gtk_container_set_border_width (GTK_CONTAINER (GTK_DIALOG (dialog)), 5);
        gtk_box_set_spacing (GTK_BOX (GTK_DIALOG (dialog)->vbox), 2);
        gtk_dialog_set_has_separator (GTK_DIALOG (dialog), FALSE);
@@ -2116,7 +2130,7 @@ ev_window_cmd_go_previous_page (GtkAction *action, EvWindow *ev_window)
 {
         g_return_if_fail (EV_IS_WINDOW (ev_window));
 
-       ev_page_cache_prev_page (ev_window->priv->page_cache);
+       ev_view_previous_page (ev_window->priv->view);
 }
 
 static void
@@ -2124,7 +2138,7 @@ ev_window_cmd_go_next_page (GtkAction *action, EvWindow *ev_window)
 {
         g_return_if_fail (EV_IS_WINDOW (ev_window));
 
-       ev_page_cache_next_page (ev_window->priv->page_cache);
+       ev_view_next_page (ev_window->priv->view);
 }
 
 static void