+ g_assert (start_page <= end_page);
+
+ path = gtk_tree_path_new_from_indices (start_page, -1);
+ for (result = gtk_tree_model_get_iter (GTK_TREE_MODEL (priv->list_store), &iter, path);
+ result && start_page <= end_page;
+ result = gtk_tree_model_iter_next (GTK_TREE_MODEL (priv->list_store), &iter), start_page ++) {
+ EvJobThumbnail *job;
+
+ gtk_tree_model_get (GTK_TREE_MODEL (priv->list_store),
+ &iter,
+ COLUMN_JOB, &job,
+ -1);
+
+ if (job) {
+ g_signal_handlers_disconnect_by_func (job, thumbnail_job_completed_callback, sidebar_thumbnails);
+ ev_job_queue_remove_job (EV_JOB (job));
+ g_object_unref (job);
+ }
+
+ gtk_list_store_set (priv->list_store, &iter,
+ COLUMN_JOB, NULL,
+ COLUMN_THUMBNAIL_SET, FALSE,
+ COLUMN_PIXBUF, priv->loading_icon,
+ -1);
+ }
+ gtk_tree_path_free (path);
+}
+
+static void
+add_range (EvSidebarThumbnails *sidebar_thumbnails,
+ gint start_page,
+ gint end_page)
+{
+ EvSidebarThumbnailsPrivate *priv = sidebar_thumbnails->priv;
+ GtkTreePath *path;
+ GtkTreeIter iter;
+ gboolean result;
+ gint page = start_page;
+
+ g_assert (start_page <= end_page);
+
+ path = gtk_tree_path_new_from_indices (start_page, -1);
+ for (result = gtk_tree_model_get_iter (GTK_TREE_MODEL (priv->list_store), &iter, path);
+ result && page <= end_page;
+ result = gtk_tree_model_iter_next (GTK_TREE_MODEL (priv->list_store), &iter), page ++) {
+ EvJobThumbnail *job;
+ gboolean thumbnail_set;
+
+ gtk_tree_model_get (GTK_TREE_MODEL (priv->list_store), &iter,
+ COLUMN_JOB, &job,
+ COLUMN_THUMBNAIL_SET, &thumbnail_set,
+ -1);