From 46746347b389f78dfd026b511600fbe46b019bc1 Mon Sep 17 00:00:00 2001 From: Carlos Garcia Campos Date: Sun, 25 Apr 2010 16:20:56 +0000 Subject: [presentation] Make inverted colors mode work in presentation mode too Fixes bug #614693. --- diff --git a/libview/ev-view-presentation.c b/libview/ev-view-presentation.c index 7cf94bd..5df5cfa 100644 --- a/libview/ev-view-presentation.c +++ b/libview/ev-view-presentation.c @@ -36,7 +36,8 @@ enum { PROP_0, PROP_DOCUMENT, PROP_CURRENT_PAGE, - PROP_ROTATION + PROP_ROTATION, + PROP_INVERTED_COLORS }; enum { @@ -60,6 +61,7 @@ struct _EvViewPresentation cairo_surface_t *current_surface; EvDocument *document; guint rotation; + gboolean inverted_colors; EvPresentationState state; gdouble scale; gint monitor_width; @@ -323,6 +325,9 @@ job_finished_cb (EvJob *job, { EvJobRender *job_render = EV_JOB_RENDER (job); + if (pview->inverted_colors) + ev_document_misc_invert_surface (job_render->surface); + if (job != pview->curr_job) return; @@ -1326,6 +1331,9 @@ ev_view_presentation_set_property (GObject *object, case PROP_ROTATION: pview->rotation = g_value_get_uint (value); break; + case PROP_INVERTED_COLORS: + pview->inverted_colors = g_value_get_boolean (value); + break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); } @@ -1401,6 +1409,14 @@ ev_view_presentation_class_init (EvViewPresentationClass *klass) 0, 360, 0, G_PARAM_WRITABLE | G_PARAM_CONSTRUCT_ONLY)); + g_object_class_install_property (gobject_class, + PROP_INVERTED_COLORS, + g_param_spec_boolean ("inverted_colors", + "Inverted Colors", + "Whether presentation is displayed with inverted colors", + FALSE, + G_PARAM_WRITABLE | + G_PARAM_CONSTRUCT_ONLY)); signals[CHANGE_PAGE] = g_signal_new ("change_page", @@ -1461,7 +1477,8 @@ ev_view_presentation_init (EvViewPresentation *pview) GtkWidget * ev_view_presentation_new (EvDocument *document, guint current_page, - guint rotation) + guint rotation, + gboolean inverted_colors) { g_return_val_if_fail (EV_IS_DOCUMENT (document), NULL); g_return_val_if_fail (current_page < ev_document_get_n_pages (document), NULL); @@ -1470,6 +1487,7 @@ ev_view_presentation_new (EvDocument *document, "document", document, "current_page", current_page, "rotation", rotation, + "inverted_colors", inverted_colors, NULL)); } diff --git a/libview/ev-view-presentation.h b/libview/ev-view-presentation.h index dde9ad8..24553b0 100644 --- a/libview/ev-view-presentation.h +++ b/libview/ev-view-presentation.h @@ -42,7 +42,8 @@ GType ev_view_presentation_get_type (void) G_GNUC_CONST; GtkWidget *ev_view_presentation_new (EvDocument *document, guint current_page, - guint rotation); + guint rotation, + gboolean inverted_colors); guint ev_view_presentation_get_current_page (EvViewPresentation *pview); G_END_DECLS diff --git a/shell/ev-window.c b/shell/ev-window.c index b78c317..a7debed 100644 --- a/shell/ev-window.c +++ b/shell/ev-window.c @@ -3567,6 +3567,7 @@ ev_window_run_presentation (EvWindow *window) gboolean fullscreen_window = TRUE; guint current_page; guint rotation; + gboolean inverted_colors; if (EV_WINDOW_IS_PRESENTATION (window)) return; @@ -3578,8 +3579,11 @@ ev_window_run_presentation (EvWindow *window) current_page = ev_document_model_get_page (window->priv->model); rotation = ev_document_model_get_rotation (window->priv->model); - window->priv->presentation_view = - ev_view_presentation_new (window->priv->document, current_page, rotation); + inverted_colors = ev_document_model_get_inverted_colors (window->priv->model); + window->priv->presentation_view = ev_view_presentation_new (window->priv->document, + current_page, + rotation, + inverted_colors); g_signal_connect_swapped (window->priv->presentation_view, "finished", G_CALLBACK (ev_window_view_presentation_finished), window); -- cgit v0.9.1