+
+ if (path == NULL)
+ path = gtk_tree_path_new_first ();
+ if (path2 == NULL)
+ path2 = gtk_tree_path_new_from_indices (priv->n_pages,
+ -1);
+ update_visible_range (sidebar_thumbnails,
+ gtk_tree_path_get_indices (path)[0],
+ gtk_tree_path_get_indices (path2)[0]);
+
+ gtk_tree_path_free (path);
+ gtk_tree_path_free (path2);
+}
+
+static void
+ev_sidebar_thumbnails_fill_model (EvSidebarThumbnails *sidebar_thumbnails)
+{
+ EvSidebarThumbnailsPrivate *priv = sidebar_thumbnails->priv;
+ GtkTreeIter iter;
+ int i;
+
+ for (i = 0; i < sidebar_thumbnails->priv->n_pages; i++) {
+ gchar *page_label;
+ gchar *page_string;
+
+ page_label = ev_page_cache_get_page_label (priv->page_cache, i);
+ page_string = g_markup_printf_escaped ("<i>%s</i>", page_label);
+
+ gtk_list_store_append (priv->list_store, &iter);
+ gtk_list_store_set (priv->list_store, &iter,
+ COLUMN_PAGE_STRING, page_string,
+ COLUMN_PIXBUF, priv->loading_icon,
+ COLUMN_THUMBNAIL_SET, FALSE,
+ -1);
+ g_free (page_label);
+ g_free (page_string);
+ }
+}
+
+
+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) {
+ /* We get the dimensions of the first doc 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),
+ 0, THUMBNAIL_WIDTH, &width, &height);
+ ev_document_doc_mutex_unlock ();
+ sidebar_thumbnails->priv->loading_icon =
+ ev_document_misc_get_thumbnail_frame (width, height, sidebar_thumbnails->priv->rotation, NULL);
+ } else {
+ sidebar_thumbnails->priv->loading_icon = NULL;
+ }
+
+}
+void
+ev_sidebar_thumbnails_refresh (EvSidebarThumbnails *sidebar_thumbnails,
+ int rotation)
+{
+ sidebar_thumbnails->priv->rotation = rotation;
+ ev_sidebar_thumbnails_set_loading_icon (sidebar_thumbnails);
+
+ if (sidebar_thumbnails->priv->document == NULL)
+ return;
+
+ ev_sidebar_thumbnails_clear_model (sidebar_thumbnails);
+ ev_sidebar_thumbnails_fill_model (sidebar_thumbnails);
+
+ /* Trigger a redraw */
+ sidebar_thumbnails->priv->start_page = 0;
+ sidebar_thumbnails->priv->end_page = 0;
+ adjustment_changed_cb (sidebar_thumbnails);