X-Git-Url: https://www.fi.muni.cz/~kas/git//home/kas/public_html/git/?a=blobdiff_plain;ds=inline;f=shell%2Fev-sidebar-thumbnails.c;h=87b939238a61397ec1730e16527e58ab2cbe4ecc;hb=7a6187803fffe561099ea780692ab5b959093220;hp=e104c3eb3e3e6391582d3f9f1af3bb91b5ce4503;hpb=34148304a0237fd9fd7c4ea05ca2e053d9ddd3ff;p=evince.git diff --git a/shell/ev-sidebar-thumbnails.c b/shell/ev-sidebar-thumbnails.c index e104c3eb..87b93923 100644 --- a/shell/ev-sidebar-thumbnails.c +++ b/shell/ev-sidebar-thumbnails.c @@ -72,6 +72,7 @@ struct _EvSidebarThumbnailsPrivate { gint n_pages, pages_done; int rotation; + gboolean inverted_colors; /* Visible pages */ gint start_page, end_page; @@ -116,7 +117,7 @@ static EvThumbsSizeCache * ev_thumbnails_size_cache_new (EvDocument *document) { EvThumbsSizeCache *cache; - EvRenderContext *rc; + EvRenderContext *rc = NULL; gint i, n_pages; EvThumbsSize *thumb_size; @@ -765,13 +766,10 @@ refresh (EvSidebarThumbnails *sidebar_thumbnails) } static void -ev_sidebar_thumbnails_rotation_changed_cb (EvDocumentModel *model, - GParamSpec *pspec, - EvSidebarThumbnails *sidebar_thumbnails) +ev_sidebar_thumbnails_reload (EvSidebarThumbnails *sidebar_thumbnails) { - gint rotation = ev_document_model_get_rotation (model); + EvDocumentModel *model; - sidebar_thumbnails->priv->rotation = rotation; if (sidebar_thumbnails->priv->loading_icons) g_hash_table_remove_all (sidebar_thumbnails->priv->loading_icons); @@ -779,15 +777,41 @@ ev_sidebar_thumbnails_rotation_changed_cb (EvDocumentModel *model, sidebar_thumbnails->priv->n_pages <= 0) return; + model = sidebar_thumbnails->priv->model; + ev_sidebar_thumbnails_clear_model (sidebar_thumbnails); ev_sidebar_thumbnails_fill_model (sidebar_thumbnails); /* Trigger a redraw */ sidebar_thumbnails->priv->start_page = -1; sidebar_thumbnails->priv->end_page = -1; + ev_sidebar_thumbnails_set_current_page (sidebar_thumbnails, + ev_document_model_get_page (model)); g_idle_add ((GSourceFunc)refresh, sidebar_thumbnails); } +static void +ev_sidebar_thumbnails_rotation_changed_cb (EvDocumentModel *model, + GParamSpec *pspec, + EvSidebarThumbnails *sidebar_thumbnails) +{ + gint rotation = ev_document_model_get_rotation (model); + + sidebar_thumbnails->priv->rotation = rotation; + ev_sidebar_thumbnails_reload (sidebar_thumbnails); +} + +static void +ev_sidebar_thumbnails_inverted_colors_changed_cb (EvDocumentModel *model, + GParamSpec *pspec, + EvSidebarThumbnails *sidebar_thumbnails) +{ + gboolean inverted_colors = ev_document_model_get_inverted_colors (model); + + sidebar_thumbnails->priv->inverted_colors = inverted_colors; + ev_sidebar_thumbnails_reload (sidebar_thumbnails); +} + static void thumbnail_job_completed_callback (EvJobThumbnail *job, EvSidebarThumbnails *sidebar_thumbnails) @@ -796,6 +820,8 @@ thumbnail_job_completed_callback (EvJobThumbnail *job, GtkTreeIter *iter; iter = (GtkTreeIter *) g_object_get_data (G_OBJECT (job), "tree_iter"); + if (priv->inverted_colors) + ev_document_misc_invert_pixbuf (job->thumbnail); gtk_list_store_set (priv->list_store, iter, COLUMN_PIXBUF, job->thumbnail, @@ -821,6 +847,8 @@ ev_sidebar_thumbnails_document_changed_cb (EvDocumentModel *model, priv->size_cache = ev_thumbnails_size_cache_get (document); priv->document = document; priv->n_pages = ev_document_get_n_pages (document); + priv->rotation = ev_document_model_get_rotation (model); + priv->inverted_colors = ev_document_model_get_inverted_colors (model); priv->loading_icons = g_hash_table_new_full (g_str_hash, g_str_equal, (GDestroyNotify)g_free, @@ -861,6 +889,9 @@ ev_sidebar_thumbnails_document_changed_cb (EvDocumentModel *model, g_signal_connect (priv->model, "notify::rotation", G_CALLBACK (ev_sidebar_thumbnails_rotation_changed_cb), sidebar_thumbnails); + g_signal_connect (priv->model, "notify::inverted-colors", + G_CALLBACK (ev_sidebar_thumbnails_inverted_colors_changed_cb), + sidebar_thumbnails); sidebar_thumbnails->priv->start_page = -1; sidebar_thumbnails->priv->end_page = -1; ev_sidebar_thumbnails_set_current_page (sidebar_thumbnails, @@ -932,4 +963,3 @@ ev_sidebar_thumbnails_page_iface_init (EvSidebarPageIface *iface) iface->set_model = ev_sidebar_thumbnails_set_model; iface->get_label = ev_sidebar_thumbnails_get_label; } -