X-Git-Url: https://www.fi.muni.cz/~kas/git//home/kas/public_html/git/?a=blobdiff_plain;ds=inline;f=libview%2Fev-view-presentation.c;h=fa79f1042bbc5e0d648453659c8f0cd832c33e48;hb=38c1b9aab8bfb41de6dc07df26fd6743a63ea015;hp=0a11ce1cb5f6a95495e851d74fdef4e338d4a009;hpb=356536f6b8b44bfcf13c644a26ecdd583465bc0f;p=evince.git diff --git a/libview/ev-view-presentation.c b/libview/ev-view-presentation.c index 0a11ce1c..fa79f104 100644 --- a/libview/ev-view-presentation.c +++ b/libview/ev-view-presentation.c @@ -534,7 +534,7 @@ ev_view_presentation_previous_page (EvViewPresentation *pview) /* Goto Window */ #define KEY_IS_NUMERIC(keyval) \ - ((keyval >= GDK_0 && keyval <= GDK_9) || (keyval >= GDK_KP_0 && keyval <= GDK_KP_9)) + ((keyval >= GDK_KEY_0 && keyval <= GDK_KEY_9) || (keyval >= GDK_KEY_KP_0 && keyval <= GDK_KEY_KP_9)) /* Cut and paste from gtkwindow.c */ static void @@ -579,17 +579,17 @@ ev_view_presentation_goto_window_key_press_event (GtkWidget *widget, EvViewPresentation *pview) { switch (event->keyval) { - case GDK_Escape: - case GDK_Tab: - case GDK_KP_Tab: - case GDK_ISO_Left_Tab: + case GDK_KEY_Escape: + case GDK_KEY_Tab: + case GDK_KEY_KP_Tab: + case GDK_KEY_ISO_Left_Tab: ev_view_presentation_goto_window_hide (pview); return TRUE; - case GDK_Return: - case GDK_KP_Enter: - case GDK_ISO_Enter: - case GDK_BackSpace: - case GDK_Delete: + case GDK_KEY_Return: + case GDK_KEY_KP_Enter: + case GDK_KEY_ISO_Enter: + case GDK_KEY_BackSpace: + case GDK_KEY_Delete: return FALSE; default: if (!KEY_IS_NUMERIC (event->keyval)) @@ -901,7 +901,7 @@ ev_view_presentation_update_current_surface (EvViewPresentation *pview, } static void -ev_view_presentation_destroy (GtkObject *object) +ev_view_presentation_dispose (GObject *object) { EvViewPresentation *pview = EV_VIEW_PRESENTATION (object); @@ -945,7 +945,7 @@ ev_view_presentation_destroy (GtkObject *object) pview->goto_entry = NULL; } - GTK_OBJECT_CLASS (ev_view_presentation_parent_class)->destroy (object); + G_OBJECT_CLASS (ev_view_presentation_parent_class)->dispose (object); } static void @@ -957,7 +957,8 @@ ev_view_presentation_size_request (GtkWidget *widget, } static void -ev_view_presentation_draw_end_page (EvViewPresentation *pview) +ev_view_presentation_draw_end_page (EvViewPresentation *pview, + cairo_t *cr) { GtkWidget *widget = GTK_WIDGET (pview); PangoLayout *layout; @@ -983,34 +984,36 @@ ev_view_presentation_draw_end_page (EvViewPresentation *pview) area.width = allocation.width; area.height = allocation.height; - 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); + gtk_paint_layout (gtk_widget_get_style (widget), + cr, + gtk_widget_get_state (widget), + FALSE, + widget, + NULL, + 15, + 15, + layout); pango_font_description_free (font_desc); g_object_unref (layout); } static gboolean -ev_view_presentation_expose_event (GtkWidget *widget, - GdkEventExpose *event) +ev_view_presentation_draw (GtkWidget *widget, + cairo_t *cr) { EvViewPresentation *pview = EV_VIEW_PRESENTATION (widget); GdkRectangle page_area; GdkRectangle overlap; cairo_surface_t *surface; - cairo_t *cr; + GdkRectangle clip_rect; + + if (!gdk_cairo_get_clip_rectangle (cr, &clip_rect)) + return FALSE; switch (pview->state) { case EV_PRESENTATION_END: - ev_view_presentation_draw_end_page (pview); + ev_view_presentation_draw_end_page (pview, cr); return FALSE; case EV_PRESENTATION_BLACK: case EV_PRESENTATION_WHITE: @@ -1023,7 +1026,7 @@ ev_view_presentation_expose_event (GtkWidget *widget, if (ev_transition_animation_ready (pview->animation)) { ev_view_presentation_get_page_area (pview, &page_area); - cr = gdk_cairo_create (gtk_widget_get_window (widget)); + cairo_save (cr); /* normalize to x=0, y=0 */ cairo_translate (cr, page_area.x, page_area.y); @@ -1033,7 +1036,8 @@ ev_view_presentation_expose_event (GtkWidget *widget, page_area.width--; ev_transition_animation_paint (pview->animation, cr, page_area); - cairo_destroy (cr); + + cairo_restore (cr); } return TRUE; @@ -1049,8 +1053,8 @@ ev_view_presentation_expose_event (GtkWidget *widget, } ev_view_presentation_get_page_area (pview, &page_area); - if (gdk_rectangle_intersect (&page_area, &(event->area), &overlap)) { - cr = gdk_cairo_create (gtk_widget_get_window (widget)); + 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) @@ -1059,7 +1063,8 @@ ev_view_presentation_expose_event (GtkWidget *widget, cairo_rectangle (cr, overlap.x, overlap.y, overlap.width, overlap.height); cairo_set_source_surface (cr, surface, page_area.x, page_area.y); cairo_fill (cr); - cairo_destroy (cr); + + cairo_restore (cr); } return FALSE; @@ -1072,34 +1077,34 @@ ev_view_presentation_key_press_event (GtkWidget *widget, EvViewPresentation *pview = EV_VIEW_PRESENTATION (widget); if (pview->state == EV_PRESENTATION_END) - return gtk_bindings_activate_event (GTK_OBJECT (widget), event); + return gtk_bindings_activate_event (G_OBJECT (widget), event); switch (event->keyval) { - case GDK_b: - case GDK_B: - case GDK_period: - case GDK_KP_Decimal: + case GDK_KEY_b: + case GDK_KEY_B: + case GDK_KEY_period: + case GDK_KEY_KP_Decimal: if (pview->state == EV_PRESENTATION_BLACK) ev_view_presentation_set_normal (pview); else ev_view_presentation_set_black (pview); return TRUE; - case GDK_w: - case GDK_W: + case GDK_KEY_w: + case GDK_KEY_W: if (pview->state == EV_PRESENTATION_WHITE) ev_view_presentation_set_normal (pview); else ev_view_presentation_set_white (pview); return TRUE; - case GDK_Home: + case GDK_KEY_Home: if (pview->state == EV_PRESENTATION_NORMAL) { ev_view_presentation_update_current_page (pview, 0); return TRUE; } break; - case GDK_End: + case GDK_KEY_End: if (pview->state == EV_PRESENTATION_NORMAL) { gint page; @@ -1128,7 +1133,7 @@ ev_view_presentation_key_press_event (GtkWidget *widget, return TRUE; } - return gtk_bindings_activate_event (GTK_OBJECT (widget), event); + return gtk_bindings_activate_event (G_OBJECT (widget), event); } static gboolean @@ -1222,7 +1227,6 @@ ev_view_presentation_realize (GtkWidget *widget) attributes.window_type = GDK_WINDOW_CHILD; attributes.wclass = GDK_INPUT_OUTPUT; attributes.visual = gtk_widget_get_visual (widget); - attributes.colormap = gtk_widget_get_colormap (widget); gtk_widget_get_allocation (widget, &allocation); attributes.x = allocation.x; @@ -1242,7 +1246,6 @@ ev_view_presentation_realize (GtkWidget *widget) window = gdk_window_new (gtk_widget_get_parent_window (widget), &attributes, GDK_WA_X | GDK_WA_Y | - GDK_WA_COLORMAP | GDK_WA_VISUAL); gdk_window_set_user_data (window, widget); @@ -1303,7 +1306,7 @@ add_change_page_binding_keypad (GtkBindingSet *binding_set, GdkModifierType modifiers, GtkScrollType scroll) { - guint keypad_keyval = keyval - GDK_Left + GDK_KP_Left; + guint keypad_keyval = keyval - GDK_KEY_Left + GDK_KEY_KP_Left; gtk_binding_entry_add_signal (binding_set, keyval, modifiers, "change_page", 1, @@ -1366,22 +1369,21 @@ ev_view_presentation_class_init (EvViewPresentationClass *klass) { GtkWidgetClass *widget_class = GTK_WIDGET_CLASS (klass); GObjectClass *gobject_class = G_OBJECT_CLASS (klass); - GtkObjectClass *gtk_object_class = GTK_OBJECT_CLASS (klass); GtkBindingSet *binding_set; klass->change_page = ev_view_presentation_change_page; + gobject_class->dispose = ev_view_presentation_dispose; + widget_class->size_request = ev_view_presentation_size_request; widget_class->realize = ev_view_presentation_realize; - widget_class->expose_event = ev_view_presentation_expose_event; + widget_class->draw = ev_view_presentation_draw; 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; widget_class->motion_notify_event = ev_view_presentation_motion_notify_event; widget_class->scroll_event = ev_view_presentation_scroll_event; - gtk_object_class->destroy = ev_view_presentation_destroy; - gobject_class->constructor = ev_view_presentation_constructor; gobject_class->set_property = ev_view_presentation_set_property; @@ -1438,32 +1440,32 @@ ev_view_presentation_class_init (EvViewPresentationClass *klass) G_TYPE_NONE); binding_set = gtk_binding_set_by_class (klass); - add_change_page_binding_keypad (binding_set, GDK_Left, 0, GTK_SCROLL_PAGE_BACKWARD); - add_change_page_binding_keypad (binding_set, GDK_Right, 0, GTK_SCROLL_PAGE_FORWARD); - add_change_page_binding_keypad (binding_set, GDK_Up, 0, GTK_SCROLL_PAGE_BACKWARD); - add_change_page_binding_keypad (binding_set, GDK_Down, 0, GTK_SCROLL_PAGE_FORWARD); - gtk_binding_entry_add_signal (binding_set, GDK_space, 0, + add_change_page_binding_keypad (binding_set, GDK_KEY_Left, 0, GTK_SCROLL_PAGE_BACKWARD); + add_change_page_binding_keypad (binding_set, GDK_KEY_Right, 0, GTK_SCROLL_PAGE_FORWARD); + add_change_page_binding_keypad (binding_set, GDK_KEY_Up, 0, GTK_SCROLL_PAGE_BACKWARD); + add_change_page_binding_keypad (binding_set, GDK_KEY_Down, 0, GTK_SCROLL_PAGE_FORWARD); + gtk_binding_entry_add_signal (binding_set, GDK_KEY_space, 0, "change_page", 1, GTK_TYPE_SCROLL_TYPE, GTK_SCROLL_PAGE_FORWARD); - gtk_binding_entry_add_signal (binding_set, GDK_BackSpace, 0, + gtk_binding_entry_add_signal (binding_set, GDK_KEY_BackSpace, 0, "change_page", 1, GTK_TYPE_SCROLL_TYPE, GTK_SCROLL_PAGE_BACKWARD); - gtk_binding_entry_add_signal (binding_set, GDK_Page_Down, 0, + gtk_binding_entry_add_signal (binding_set, GDK_KEY_Page_Down, 0, "change_page", 1, GTK_TYPE_SCROLL_TYPE, GTK_SCROLL_PAGE_FORWARD); - gtk_binding_entry_add_signal (binding_set, GDK_Page_Up, 0, + gtk_binding_entry_add_signal (binding_set, GDK_KEY_Page_Up, 0, "change_page", 1, GTK_TYPE_SCROLL_TYPE, GTK_SCROLL_PAGE_BACKWARD); - gtk_binding_entry_add_signal (binding_set, GDK_J, 0, + gtk_binding_entry_add_signal (binding_set, GDK_KEY_J, 0, "change_page", 1, GTK_TYPE_SCROLL_TYPE, GTK_SCROLL_PAGE_FORWARD); - gtk_binding_entry_add_signal (binding_set, GDK_H, 0, + gtk_binding_entry_add_signal (binding_set, GDK_KEY_H, 0, "change_page", 1, GTK_TYPE_SCROLL_TYPE, GTK_SCROLL_PAGE_BACKWARD); - gtk_binding_entry_add_signal (binding_set, GDK_L, 0, + gtk_binding_entry_add_signal (binding_set, GDK_KEY_L, 0, "change_page", 1, GTK_TYPE_SCROLL_TYPE, GTK_SCROLL_PAGE_FORWARD); - gtk_binding_entry_add_signal (binding_set, GDK_K, 0, + gtk_binding_entry_add_signal (binding_set, GDK_KEY_K, 0, "change_page", 1, GTK_TYPE_SCROLL_TYPE, GTK_SCROLL_PAGE_BACKWARD); }