X-Git-Url: https://www.fi.muni.cz/~kas/git//home/kas/public_html/git/?a=blobdiff_plain;f=shell%2Fev-view.c;h=f903e20a2e1d99e3d8119628c1fda21ee5635f1c;hb=aecb66e5a15ed4c610946edbd9752a21fe88415b;hp=7e77f2e0e438a45afcc5b2c641144f57464e9a12;hpb=43f12175ba221f7c241f0c9cde323c23b8db53e8;p=evince.git diff --git a/shell/ev-view.c b/shell/ev-view.c index 7e77f2e0..f903e20a 100644 --- a/shell/ev-view.c +++ b/shell/ev-view.c @@ -471,7 +471,7 @@ view_update_range_and_current_page (EvView *view) else view->end_page = view->start_page; } else { - if (view->current_page - 1 < 0) + if (view->current_page < 1) view->start_page = view->current_page; else view->start_page = view->current_page - 1; @@ -487,6 +487,7 @@ view_update_range_and_current_page (EvView *view) current_page = ev_page_cache_get_current_page (view->page_cache); if (current_page < view->start_page || current_page > view->end_page) { + view->current_page = view->start_page; ev_page_cache_set_current_page (view->page_cache, view->start_page); } @@ -573,9 +574,11 @@ ev_view_scroll (EvView *view, if (view->presentation) { switch (scroll) { + case EV_SCROLL_PAGE_BACKWARD: case EV_SCROLL_STEP_BACKWARD: ev_view_previous_page (view); break; + case EV_SCROLL_PAGE_FORWARD: case EV_SCROLL_STEP_FORWARD: ev_view_next_page (view); break; @@ -1602,8 +1605,13 @@ ev_view_expose_event (GtkWidget *widget, int i; if (view->loading) { + GdkRectangle area = {0}; + + area.width = widget->allocation.width; + area.height = widget->allocation.height; + draw_loading_text (view, - &(widget->allocation), + &area, &(event->area)); } @@ -2123,11 +2131,14 @@ draw_one_page (EvView *view, GdkRectangle overlap; GdkRectangle real_page_area; EvViewSelection *selection; + gint current_page; g_assert (view->document); + if (! gdk_rectangle_intersect (page_area, expose_area, &overlap)) return; - + + current_page = ev_page_cache_get_current_page (view->page_cache); selection = find_selection_for_page (view, page); ev_page_cache_get_size (view->page_cache, page, view->rotation, @@ -2143,7 +2154,8 @@ draw_one_page (EvView *view, ev_document_misc_paint_one_page (GTK_WIDGET(view)->window, GTK_WIDGET (view), - page_area, border); + page_area, border, + page == current_page); if (gdk_rectangle_intersect (&real_page_area, expose_area, &overlap)) { GdkPixbuf *selection_pixbuf = NULL; @@ -2608,15 +2620,16 @@ page_changed_cb (EvPageCache *page_cache, EvView *view) { if (view->current_page != new_page) { - view->current_page = new_page; view->pending_scroll = SCROLL_TO_PAGE_POSITION; gtk_widget_queue_resize (GTK_WIDGET (view)); + } else { + gtk_widget_queue_draw (GTK_WIDGET (view)); + } - if (EV_IS_DOCUMENT_FIND (view->document)) { - view->find_result = 0; - update_find_status_message (view, TRUE); - } + if (EV_IS_DOCUMENT_FIND (view->document)) { + view->find_result = 0; + update_find_status_message (view, TRUE); } } @@ -3958,7 +3971,11 @@ ev_view_next_page (EvView *view) g_return_val_if_fail (EV_IS_VIEW (view), FALSE); page = ev_page_cache_get_current_page (view->page_cache); - page = ev_view_get_dual_page (view) ? page + 2 : page + 1; + + if (view->dual_page && !view->presentation) + page = page + 2; + else + page = page + 1; if (page < ev_page_cache_get_n_pages (view->page_cache)) { ev_page_cache_set_current_page (view->page_cache, page); @@ -3979,7 +3996,11 @@ ev_view_previous_page (EvView *view) g_return_val_if_fail (EV_IS_VIEW (view), FALSE); page = ev_page_cache_get_current_page (view->page_cache); - page = ev_view_get_dual_page (view) ? page - 2 : page - 1; + + if (view->dual_page && !view->presentation) + page = page - 2; + else + page = page - 1; if (page >= 0) { ev_page_cache_set_current_page (view->page_cache, page);