X-Git-Url: https://www.fi.muni.cz/~kas/git//home/kas/public_html/git/?a=blobdiff_plain;ds=inline;f=shell%2Fev-page-cache.c;h=a43876a40fbe2b319021bdb909de566640e53d9b;hb=0be3be0d4166be324d628802772e99cacd336f11;hp=a1b4d609019e1a1abe17b4fda3b71797eef1ce9a;hpb=1af6600934d1f723e5b492b8322e52a1144fb0af;p=evince.git diff --git a/shell/ev-page-cache.c b/shell/ev-page-cache.c index a1b4d609..a43876a4 100644 --- a/shell/ev-page-cache.c +++ b/shell/ev-page-cache.c @@ -1,7 +1,7 @@ #include #include "ev-page-cache.h" -#include "ev-job-queue.h" #include "ev-document-thumbnails.h" +#include "ev-page.h" #include #include @@ -289,19 +289,22 @@ ev_page_cache_new (EvDocument *document) has_thumbs = EV_IS_DOCUMENT_THUMBNAILS (document); for (i = 0; i < page_cache->n_pages; i++) { - double page_width = 0; - double page_height = 0; - gint thumb_width = 0; - gint thumb_height = 0; + EvPage *page; + double page_width = 0; + double page_height = 0; + gint thumb_width = 0; + gint thumb_height = 0; - ev_document_get_page_size (document, i, &page_width, &page_height); + page = ev_document_get_page (document, i); + + ev_document_get_page_size (document, page, &page_width, &page_height); - page_cache->page_labels[i] = ev_document_get_page_label (document, i); + page_cache->page_labels[i] = ev_document_get_page_label (document, page); if (page_cache->page_labels[i] != NULL) { - page_cache->max_label_chars = MAX(page_cache->max_label_chars, - g_utf8_strlen (page_cache->page_labels[i], 256)); + page_cache->max_label_chars = MAX (page_cache->max_label_chars, + g_utf8_strlen (page_cache->page_labels[i], 256)); if (!page_cache->has_labels) { gchar *expected_label; @@ -347,13 +350,15 @@ ev_page_cache_new (EvDocument *document) info->height = page_height; } - if (!has_thumbs) + if (!has_thumbs) { + g_object_unref (page); continue; + } if (!rc) { - rc = ev_render_context_new (0, i, (gdouble)THUMBNAIL_WIDTH / page_width); + rc = ev_render_context_new (page, 0, (gdouble)THUMBNAIL_WIDTH / page_width); } else { - ev_render_context_set_page (rc, i); + ev_render_context_set_page (rc, page); ev_render_context_set_scale (rc, (gdouble)THUMBNAIL_WIDTH / page_width); } @@ -393,6 +398,8 @@ ev_page_cache_new (EvDocument *document) thumb_info->width = thumb_width; thumb_info->height = thumb_height; } + + g_object_unref (page); } if (rc) { @@ -475,6 +482,15 @@ ev_page_cache_set_page_label (EvPageCache *page_cache, } } + /* Second, look for a match with case insensitively */ + for (i = 0; i < page_cache->n_pages; i++) { + if (page_cache->page_labels[i] != NULL && + ! strcasecmp (page_label, page_cache->page_labels[i])) { + ev_page_cache_set_current_page (page_cache, i); + return TRUE; + } + } + /* Next, parse the label, and see if the number fits */ value = strtol (page_label, &endptr, 10); if (endptr[0] == '\0') {