]> www.fi.muni.cz Git - evince.git/blobdiff - shell/ev-sidebar-thumbnails.c
Reset also cups setting to 1 when printing multiple pages per sheet. Fixes
[evince.git] / shell / ev-sidebar-thumbnails.c
index 75b735d1b877d8cca75bb5b000f19ae63b6a355c..6c20706de181396faecf1833f3ff06e293d10be0 100644 (file)
@@ -228,7 +228,7 @@ get_scale_for_page (EvSidebarThumbnails *sidebar_thumbnails,
        gint width, height;
 
        ev_page_cache_get_size (priv->page_cache,
-                               page, priv->rotation,
+                               page, 0,
                                1.0, &width, &height);
        
        return (gdouble)THUMBNAIL_WIDTH / (gdouble)width;
@@ -333,12 +333,22 @@ adjustment_changed_cb (EvSidebarThumbnails *sidebar_thumbnails)
                if (! GTK_WIDGET_REALIZED (priv->tree_view))
                        return;
 
+#if GTK_CHECK_VERSION (2, 11, 3)
+               gtk_tree_view_convert_widget_to_bin_window_coords (GTK_TREE_VIEW (priv->tree_view),
+                                                                  0, (int) priv->vadjustment->value,
+                                                                  NULL, &wy1);
+               gtk_tree_view_convert_widget_to_bin_window_coords (GTK_TREE_VIEW (priv->tree_view),
+                                                                  0, (int) (priv->vadjustment->value + priv->vadjustment->page_size),
+                                                                  NULL, &wy2);
+#else
                gtk_tree_view_tree_to_widget_coords (GTK_TREE_VIEW (priv->tree_view),
                                                     0, (int) priv->vadjustment->value,
                                                     NULL, &wy1);
                gtk_tree_view_tree_to_widget_coords (GTK_TREE_VIEW (priv->tree_view),
                                                     0, (int) (priv->vadjustment->value + priv->vadjustment->page_size),
                                                     NULL, &wy2);
+#endif /* GTK_CHECK_VERSION (2, 11, 3) */
+               
                gtk_tree_view_get_path_at_pos (GTK_TREE_VIEW (priv->tree_view),
                                               1, wy1 + 1, &path,
                                               NULL, NULL, NULL);
@@ -393,27 +403,18 @@ ev_sidebar_thumbnails_fill_model (EvSidebarThumbnails *sidebar_thumbnails)
 static void
 ev_sidebar_thumbnails_set_loading_icon (EvSidebarThumbnails *sidebar_thumbnails)
 {
-       gint width = THUMBNAIL_WIDTH;
-       gint height = THUMBNAIL_WIDTH;
-
        if (sidebar_thumbnails->priv->loading_icon)
                g_object_unref (sidebar_thumbnails->priv->loading_icon);
 
        if (sidebar_thumbnails->priv->document) {
-               EvRenderContext *rc;
+               gint width, height;
 
-               rc = ev_render_context_new (sidebar_thumbnails->priv->rotation, 0,
-                                           get_scale_for_page (sidebar_thumbnails, 0));
-
-               /* We get the dimensions of the first doc so that we can make a blank
+               /* We get the dimensions of the first page so that we can make a blank
                 * icon.  */
-               ev_document_doc_mutex_lock ();
-               ev_document_thumbnails_get_dimensions (EV_DOCUMENT_THUMBNAILS (sidebar_thumbnails->priv->document),
-                                                      rc, &width, &height);
-               ev_document_doc_mutex_unlock ();
-               
-               g_object_unref (rc);
-               
+               ev_page_cache_get_thumbnail_size (sidebar_thumbnails->priv->page_cache, 0,
+                                                 sidebar_thumbnails->priv->rotation,
+                                                 &width, &height);
+
                sidebar_thumbnails->priv->loading_icon =
                        ev_document_misc_get_thumbnail_frame (width, height, NULL);
        } else {
@@ -562,8 +563,12 @@ ev_sidebar_thumbnails_init (EvSidebarThumbnails *ev_sidebar_thumbnails)
                                               EV_TYPE_JOB_THUMBNAIL);
 
        priv->swindow = gtk_scrolled_window_new (NULL, NULL);
+       
+       /* We actually don't want GTK_POLICY_AUTOMATIC for horizontal scrollbar here
+        * it's just a workaround for bug #449462
+        */
        gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (priv->swindow),
-                                       GTK_POLICY_NEVER, GTK_POLICY_AUTOMATIC);
+                                       GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC);
        gtk_scrolled_window_set_shadow_type (GTK_SCROLLED_WINDOW (priv->swindow),
                                             GTK_SHADOW_IN);
        priv->vadjustment = gtk_scrolled_window_get_vadjustment (GTK_SCROLLED_WINDOW (priv->swindow));
@@ -676,6 +681,9 @@ ev_sidebar_thumbnails_set_document (EvSidebarPage   *sidebar_page,
        g_signal_connect (priv->page_cache, "page-changed", G_CALLBACK (page_changed_cb), sidebar_thumbnails);
        sidebar_thumbnails->priv->start_page = 0;
        sidebar_thumbnails->priv->end_page = 0;
+       page_changed_cb (priv->page_cache,
+                        ev_page_cache_get_current_page (priv->page_cache),
+                        sidebar_thumbnails);
        adjustment_changed_cb (sidebar_thumbnails);
 }