/* make some sanity check assertions */
if (! page_cache->uniform)
g_assert (page_cache->size_cache != NULL);
- if (page_cache->uniform && page_cache->n_pages > 0)
- g_assert (page_cache->uniform_width > 0 && page_cache->uniform_height > 0);
ev_document_doc_mutex_unlock ();
return page_cache;
}
+gboolean
+ev_page_cache_check_dimensions (EvPageCache *page_cache)
+{
+ gint document_width, document_height;
+
+ if (page_cache->uniform && page_cache->n_pages > 0)
+ if (page_cache->uniform_width <= 0 || page_cache->uniform_height <= 0)
+ return TRUE;
+
+ ev_page_cache_get_max_width (page_cache,
+ 0, 1.0,
+ &document_width);
+ ev_page_cache_get_max_height (page_cache,
+ 0, 1.0,
+ &document_height);
+
+ if (document_width <= 0 || document_height <= 0)
+ return TRUE;
+
+ return FALSE;
+}
+
gint
ev_page_cache_get_n_pages (EvPageCache *page_cache)
{
EvSidebarThumbnailsPrivate *priv = sidebar_thumbnails->priv;
- g_return_if_fail (EV_IS_DOCUMENT_THUMBNAILS (document));
-
priv->page_cache = ev_page_cache_get (document);
+
+ if (!EV_IS_DOCUMENT_THUMBNAILS (document) ||
+ ev_page_cache_get_n_pages (priv->page_cache) <= 0 ||
+ ev_page_cache_check_dimensions (priv->page_cache)) {
+ return;
+ }
+
priv->document = document;
priv->n_pages = ev_page_cache_get_n_pages (priv->page_cache);
priv->loading_icons = g_hash_table_new_full (g_str_hash,
request_width = MIN (request_width, gdk_screen_get_width (screen));
request_height = MIN (request_width, gdk_screen_get_height (screen));
}
-
- gtk_window_resize (GTK_WINDOW (window),
- request_width,
- request_height);
+
+ if (request_width > 0 && request_height > 0) {
+ gtk_window_resize (GTK_WINDOW (window),
+ request_width,
+ request_height);
+ }
g_value_unset (&width_ratio);
g_value_unset (&height_ratio);
}
EvDocument *document = ev_window->priv->document;
if (!EV_IS_DOCUMENT_THUMBNAILS (document) ||
- ev_page_cache_get_n_pages (ev_window->priv->page_cache) <= 0) {
+ ev_page_cache_get_n_pages (ev_window->priv->page_cache) <= 0 ||
+ ev_page_cache_check_dimensions (ev_window->priv->page_cache)) {
return;
}
ev_window->priv->dest = NULL;
}
- if (ev_page_cache_get_n_pages (ev_window->priv->page_cache) > 0) {
- ev_view_set_document (view, document);
- } else {
+ if (ev_page_cache_get_n_pages (ev_window->priv->page_cache) <= 0) {
ev_window_warning_message (ev_window, "%s",
_("The document contains no pages"));
+ } else if (ev_page_cache_check_dimensions (ev_window->priv->page_cache)) {
+ ev_window_warning_message (ev_window, "%s",
+ _("The document contains only empty pages"));
+ } else {
+ ev_view_set_document (view, document);
}
if (ev_window->priv->setup_document_idle > 0)
g_source_remove (ev_window->priv->setup_document_idle);
+
ev_window->priv->setup_document_idle = g_idle_add ((GSourceFunc)ev_window_setup_document, ev_window);
}