X-Git-Url: https://www.fi.muni.cz/~kas/git//home/kas/public_html/git/?a=blobdiff_plain;f=libview%2Fev-view-presentation.c;h=7c03116b1e96a6c368aa636f948b360494673e3b;hb=1b0881fea0aa52239cf4f687705b68a52cd3d377;hp=2b39ca61509a8d1b3eaa2c62a3c5b343a2fe16a0;hpb=212d9a536bc60e711b779feb5e8aa33db654997d;p=evince.git diff --git a/libview/ev-view-presentation.c b/libview/ev-view-presentation.c index 2b39ca61..7c03116b 100644 --- a/libview/ev-view-presentation.c +++ b/libview/ev-view-presentation.c @@ -111,18 +111,19 @@ static void ev_view_presentation_set_cursor_for_location (EvViewPresentation *pv G_DEFINE_TYPE (EvViewPresentation, ev_view_presentation, GTK_TYPE_WIDGET) +static GdkRGBA black = { 0., 0., 0., 1. }; +static GdkRGBA white = { 1., 1., 1., 1. }; + static void ev_view_presentation_set_normal (EvViewPresentation *pview) { GtkWidget *widget = GTK_WIDGET (pview); - GtkStyle *style; if (pview->state == EV_PRESENTATION_NORMAL) return; pview->state = EV_PRESENTATION_NORMAL; - style = gtk_widget_get_style (widget); - gdk_window_set_background (gtk_widget_get_window (widget), &style->black); + gdk_window_set_background_rgba (gtk_widget_get_window (widget), &black); gtk_widget_queue_draw (widget); } @@ -130,14 +131,12 @@ static void ev_view_presentation_set_black (EvViewPresentation *pview) { GtkWidget *widget = GTK_WIDGET (pview); - GtkStyle *style; if (pview->state == EV_PRESENTATION_BLACK) return; pview->state = EV_PRESENTATION_BLACK; - style = gtk_widget_get_style (widget); - gdk_window_set_background (gtk_widget_get_window (widget), &style->black); + gdk_window_set_background_rgba (gtk_widget_get_window (widget), &black); gtk_widget_queue_draw (widget); } @@ -145,14 +144,12 @@ static void ev_view_presentation_set_white (EvViewPresentation *pview) { GtkWidget *widget = GTK_WIDGET (pview); - GtkStyle *style; if (pview->state == EV_PRESENTATION_WHITE) return; pview->state = EV_PRESENTATION_WHITE; - style = gtk_widget_get_style (widget); - gdk_window_set_background (gtk_widget_get_window (widget), &style->white); + gdk_window_set_background_rgba (gtk_widget_get_window (widget), &white); gtk_widget_queue_draw (widget); } @@ -846,7 +843,7 @@ ev_view_presentation_set_cursor (EvViewPresentation *pview, gdk_window_set_cursor (gtk_widget_get_window (widget), cursor); gdk_flush (); if (cursor) - gdk_cursor_unref (cursor); + g_object_unref (cursor); } static void @@ -949,11 +946,19 @@ ev_view_presentation_dispose (GObject *object) } static void -ev_view_presentation_size_request (GtkWidget *widget, - GtkRequisition *requisition) +ev_view_presentation_get_preferred_width (GtkWidget *widget, + gint *minimum, + gint *natural) +{ + *minimum = *natural = 0; +} + +static void +ev_view_presentation_get_preferred_height (GtkWidget *widget, + gint *minimum, + gint *natural) { - requisition->width = 0; - requisition->height = 0; + *minimum = *natural = 0; } static void @@ -984,60 +989,25 @@ ev_view_presentation_draw_end_page (EvViewPresentation *pview, area.width = allocation.width; area.height = allocation.height; -#if GTK_CHECK_VERSION (2, 90, 8) - gtk_paint_layout (gtk_widget_get_style (widget), - cr, - gtk_widget_get_state (widget), - FALSE, - widget, - NULL, - 15, - 15, - layout); -#else - gtk_paint_layout (gtk_widget_get_style (widget), - gtk_widget_get_window (widget), - gtk_widget_get_state (widget), - FALSE, - &area, - widget, - NULL, - 15, - 15, - layout); -#endif + gtk_render_layout (gtk_widget_get_style_context (widget), + cr, 15, 15, layout); pango_font_description_free (font_desc); g_object_unref (layout); } -#if GTK_CHECK_VERSION (2, 90, 8) static gboolean ev_view_presentation_draw (GtkWidget *widget, cairo_t *cr) -#else -static gboolean -ev_view_presentation_expose_event (GtkWidget *widget, - GdkEventExpose *event) -#endif { EvViewPresentation *pview = EV_VIEW_PRESENTATION (widget); GdkRectangle page_area; GdkRectangle overlap; cairo_surface_t *surface; -#if GTK_CHECK_VERSION (2, 90, 8) - cairo_rectangle_int_t clip_rect; - GdkRectangle *area = &clip_rect; -#else - GdkWindow *bin_window; - cairo_t *cr = NULL; - GdkRectangle *area = &event->area; -#endif - -#if GTK_CHECK_VERSION (2, 90, 8) + GdkRectangle clip_rect; + if (!gdk_cairo_get_clip_rectangle (cr, &clip_rect)) return FALSE; -#endif switch (pview->state) { case EV_PRESENTATION_END: @@ -1054,11 +1024,7 @@ ev_view_presentation_expose_event (GtkWidget *widget, if (ev_transition_animation_ready (pview->animation)) { ev_view_presentation_get_page_area (pview, &page_area); -#if GTK_CHECK_VERSION (2, 90, 8) cairo_save (cr); -#else - cr = gdk_cairo_create (gtk_widget_get_window (widget)); -#endif /* normalize to x=0, y=0 */ cairo_translate (cr, page_area.x, page_area.y); @@ -1069,11 +1035,7 @@ ev_view_presentation_expose_event (GtkWidget *widget, ev_transition_animation_paint (pview->animation, cr, page_area); -#if GTK_CHECK_VERSION (2, 90, 8) cairo_restore (cr); -#else - cairo_destroy (cr); -#endif } return TRUE; @@ -1089,12 +1051,8 @@ ev_view_presentation_expose_event (GtkWidget *widget, } ev_view_presentation_get_page_area (pview, &page_area); - if (gdk_rectangle_intersect (&page_area, area, &overlap)) { -#if GTK_CHECK_VERSION (2, 90, 8) - cairo_save (cr); -#else - cr = gdk_cairo_create (gtk_widget_get_window (widget)); -#endif + if (gdk_rectangle_intersect (&page_area, &clip_rect, &overlap)) { + cairo_save (cr); /* Try to fix rounding errors. See bug #438760 */ if (overlap.width == page_area.width) @@ -1104,11 +1062,7 @@ ev_view_presentation_expose_event (GtkWidget *widget, cairo_set_source_surface (cr, surface, page_area.x, page_area.y); cairo_fill (cr); -#if GTK_CHECK_VERSION (2, 90, 8) cairo_restore (cr); -#else - cairo_destroy (cr); -#endif } return FALSE; @@ -1121,11 +1075,7 @@ ev_view_presentation_key_press_event (GtkWidget *widget, EvViewPresentation *pview = EV_VIEW_PRESENTATION (widget); if (pview->state == EV_PRESENTATION_END) -#if GTK_CHECK_VERSION (2, 90, 8) return gtk_bindings_activate_event (G_OBJECT (widget), event); -#else - return gtk_bindings_activate_event (GTK_OBJECT (widget), event); -#endif switch (event->keyval) { case GDK_KEY_b: @@ -1181,11 +1131,7 @@ ev_view_presentation_key_press_event (GtkWidget *widget, return TRUE; } -#if GTK_CHECK_VERSION (2, 90, 8) return gtk_bindings_activate_event (G_OBJECT (widget), event); -#else - return gtk_bindings_activate_event (GTK_OBJECT (widget), event); -#endif } static gboolean @@ -1269,19 +1215,15 @@ init_presentation (GtkWidget *widget) static void ev_view_presentation_realize (GtkWidget *widget) { - GdkWindow *window; - GtkStyle *style; - GdkWindowAttr attributes; - GtkAllocation allocation; + GdkWindow *window; + GdkWindowAttr attributes; + GtkAllocation allocation; gtk_widget_set_realized (widget, TRUE); attributes.window_type = GDK_WINDOW_CHILD; attributes.wclass = GDK_INPUT_OUTPUT; attributes.visual = gtk_widget_get_visual (widget); -#if !GTK_CHECK_VERSION (2, 90, 8) - attributes.colormap = gtk_widget_get_colormap (widget); -#endif gtk_widget_get_allocation (widget, &allocation); attributes.x = allocation.x; @@ -1301,17 +1243,12 @@ ev_view_presentation_realize (GtkWidget *widget) window = gdk_window_new (gtk_widget_get_parent_window (widget), &attributes, GDK_WA_X | GDK_WA_Y | -#if !GTK_CHECK_VERSION (2, 90, 8) - GDK_WA_COLORMAP | -#endif GDK_WA_VISUAL); gdk_window_set_user_data (window, widget); gtk_widget_set_window (widget, window); - gtk_widget_style_attach (widget); - style = gtk_widget_get_style (widget); - gdk_window_set_background (window, &style->black); + gdk_window_set_background_rgba (window, &black); g_idle_add ((GSourceFunc)init_presentation, widget); } @@ -1433,13 +1370,10 @@ ev_view_presentation_class_init (EvViewPresentationClass *klass) gobject_class->dispose = ev_view_presentation_dispose; - widget_class->size_request = ev_view_presentation_size_request; + widget_class->get_preferred_width = ev_view_presentation_get_preferred_width; + widget_class->get_preferred_height = ev_view_presentation_get_preferred_height; widget_class->realize = ev_view_presentation_realize; -#if GTK_CHECK_VERSION (2, 90, 8) widget_class->draw = ev_view_presentation_draw; -#else - widget_class->expose_event = ev_view_presentation_expose_event; -#endif widget_class->key_press_event = ev_view_presentation_key_press_event; widget_class->button_release_event = ev_view_presentation_button_release_event; widget_class->focus_out_event = ev_view_presentation_focus_out;