]> www.fi.muni.cz Git - evince.git/blobdiff - shell/ev-sidebar-thumbnails.c
Do not connect selection changed signal more than once. Fixes bug #349433.
[evince.git] / shell / ev-sidebar-thumbnails.c
index 75b735d1b877d8cca75bb5b000f19ae63b6a355c..26760a968115b8a0c456ad3e57cb7c69d2dab88b 100644 (file)
@@ -393,26 +393,21 @@ ev_sidebar_thumbnails_fill_model (EvSidebarThumbnails *sidebar_thumbnails)
 static void
 ev_sidebar_thumbnails_set_loading_icon (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) {
        if (sidebar_thumbnails->priv->loading_icon)
                g_object_unref (sidebar_thumbnails->priv->loading_icon);
 
        if (sidebar_thumbnails->priv->document) {
-               EvRenderContext *rc;
-
-               rc = ev_render_context_new (sidebar_thumbnails->priv->rotation, 0,
-                                           get_scale_for_page (sidebar_thumbnails, 0));
+               gint width = THUMBNAIL_WIDTH;
+               gint height;
+               gint page_width, page_height;
 
 
-               /* 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.  */
                 * 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_size (sidebar_thumbnails->priv->page_cache, 0,
+                                       sidebar_thumbnails->priv->rotation,
+                                       1.0, &page_width, &page_height);
+
+               height = (gint) (page_height * ((gdouble)width / page_width));
                
                sidebar_thumbnails->priv->loading_icon =
                        ev_document_misc_get_thumbnail_frame (width, height, NULL);
                
                sidebar_thumbnails->priv->loading_icon =
                        ev_document_misc_get_thumbnail_frame (width, height, NULL);
@@ -676,6 +671,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;
        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);
 }
 
        adjustment_changed_cb (sidebar_thumbnails);
 }