]> www.fi.muni.cz Git - evince.git/blobdiff - shell/ev-sidebar-thumbnails.c
Replace GTK_WIDGET_REALIZED() with gtk_widget_get_realized()
[evince.git] / shell / ev-sidebar-thumbnails.c
index 3e3f4bece27d8d7071028dc9fe0928e0d4281b28..16fe37661510768acdefe8bc20fd348c8e14e728 100644 (file)
@@ -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;
 
@@ -509,7 +510,7 @@ adjustment_changed_cb (EvSidebarThumbnails *sidebar_thumbnails)
                return;
        
        if (priv->tree_view) {
-               if (! GTK_WIDGET_REALIZED (priv->tree_view))
+               if (! gtk_widget_get_realized (priv->tree_view))
                        return;
 
                gtk_tree_view_convert_tree_to_bin_window_coords (GTK_TREE_VIEW (priv->tree_view),
@@ -525,7 +526,7 @@ adjustment_changed_cb (EvSidebarThumbnails *sidebar_thumbnails)
                                               1, wy2 -1, &path2,
                                               NULL, NULL, NULL);
        } else if (priv->icon_view) {
-               if (! GTK_WIDGET_REALIZED (priv->icon_view))
+               if (! gtk_widget_get_realized (priv->icon_view))
                        return;
                if (! gtk_icon_view_get_visible_range (GTK_ICON_VIEW (priv->icon_view), &path, &path2))
                        return;
@@ -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,
@@ -822,6 +848,7 @@ ev_sidebar_thumbnails_document_changed_cb (EvDocumentModel     *model,
        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,
@@ -862,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,
@@ -933,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;
 }
-