summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--shell/ev-sidebar-thumbnails.c35
1 files changed, 12 insertions, 23 deletions
diff --git a/shell/ev-sidebar-thumbnails.c b/shell/ev-sidebar-thumbnails.c
index f7f92666..22054251 100644
--- a/shell/ev-sidebar-thumbnails.c
+++ b/shell/ev-sidebar-thumbnails.c
@@ -355,16 +355,14 @@ ev_sidebar_thumbnails_get_loading_icon (EvSidebarThumbnails *sidebar_thumbnails,
}
static void
-clear_range (EvSidebarThumbnails *sidebar_thumbnails,
- gint start_page,
- gint end_page)
+cancel_running_jobs (EvSidebarThumbnails *sidebar_thumbnails,
+ gint start_page,
+ gint end_page)
{
EvSidebarThumbnailsPrivate *priv = sidebar_thumbnails->priv;
GtkTreePath *path;
GtkTreeIter iter;
gboolean result;
- gint prev_width = -1;
- gint prev_height = -1;
g_assert (start_page <= end_page);
@@ -373,37 +371,28 @@ clear_range (EvSidebarThumbnails *sidebar_thumbnails,
result && start_page <= end_page;
result = gtk_tree_model_iter_next (GTK_TREE_MODEL (priv->list_store), &iter), start_page ++) {
EvJobThumbnail *job;
-
- GdkPixbuf *loading_icon = NULL;
- gint width, height;
+ gboolean thumbnail_set;
gtk_tree_model_get (GTK_TREE_MODEL (priv->list_store),
&iter,
COLUMN_JOB, &job,
+ COLUMN_THUMBNAIL_SET, &thumbnail_set,
-1);
+ if (thumbnail_set) {
+ g_assert (job == NULL);
+ continue;
+ }
+
if (job) {
g_signal_handlers_disconnect_by_func (job, thumbnail_job_completed_callback, sidebar_thumbnails);
ev_job_cancel (EV_JOB (job));
g_object_unref (job);
}
- ev_thumbnails_size_cache_get_size (priv->size_cache, start_page,
- priv->rotation,
- &width, &height);
- if (!loading_icon || (width != prev_width && height != prev_height)) {
- loading_icon =
- ev_sidebar_thumbnails_get_loading_icon (sidebar_thumbnails,
- width, height);
- }
-
- prev_width = width;
- prev_height = height;
-
gtk_list_store_set (priv->list_store, &iter,
COLUMN_JOB, NULL,
COLUMN_THUMBNAIL_SET, FALSE,
- COLUMN_PIXBUF, loading_icon,
-1);
}
gtk_tree_path_free (path);
@@ -497,10 +486,10 @@ update_visible_range (EvSidebarThumbnails *sidebar_thumbnails,
/* Clear the areas we no longer display */
if (old_start_page >= 0 && old_start_page < start_page)
- clear_range (sidebar_thumbnails, old_start_page, MIN (start_page - 1, old_end_page));
+ cancel_running_jobs (sidebar_thumbnails, old_start_page, MIN (start_page - 1, old_end_page));
if (old_end_page > 0 && old_end_page > end_page)
- clear_range (sidebar_thumbnails, MAX (end_page + 1, old_start_page), old_end_page);
+ cancel_running_jobs (sidebar_thumbnails, MAX (end_page + 1, old_start_page), old_end_page);
add_range (sidebar_thumbnails, start_page, end_page);