X-Git-Url: https://www.fi.muni.cz/~kas/git//home/kas/public_html/git/?a=blobdiff_plain;f=shell%2Fev-view.c;h=e599059099aff435f3220fc3de051ed059e38b49;hb=e7a7ecbb0f3b55029821fe439cd8f7fecf1478ff;hp=2e4752b75ccf8a9eeb26844389ce012ddfd9f745;hpb=92603d06e3606238f25df947fed3666c5814440d;p=evince.git diff --git a/shell/ev-view.c b/shell/ev-view.c index 2e4752b7..e5990590 100644 --- a/shell/ev-view.c +++ b/shell/ev-view.c @@ -569,6 +569,8 @@ ev_view_scroll (EvView *view, gboolean first_page = FALSE; gboolean last_page = FALSE; + view->jump_to_find_result = FALSE; + if (view->presentation) { switch (scroll) { case EV_SCROLL_STEP_BACKWARD: @@ -1540,6 +1542,7 @@ ev_view_scroll_event (GtkWidget *widget, GdkEventScroll *event) return TRUE; } + view->jump_to_find_result = FALSE; /* Shift+Wheel scrolls the in the perpendicular direction */ if (state & GDK_SHIFT_MASK) { if (event->direction == GDK_SCROLL_UP) @@ -2120,11 +2123,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, @@ -2140,7 +2146,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; @@ -2568,6 +2575,7 @@ ev_view_init (EvView *view) view->fullscreen = FALSE; view->sizing_mode = EV_SIZING_FIT_WIDTH; view->pending_scroll = SCROLL_TO_KEEP_POSITION; + view->jump_to_find_result = TRUE; } /*** Callbacks ***/ @@ -2581,8 +2589,11 @@ find_changed_cb (EvDocument *document, int page, EvView *view) percent = ev_document_find_get_progress (EV_DOCUMENT_FIND (view->document)); n_pages = ev_page_cache_get_n_pages (view->page_cache); - jump_to_find_page (view, EV_VIEW_FIND_NEXT, 0); - jump_to_find_result (view); + + if (view->jump_to_find_result == TRUE) { + jump_to_find_page (view, EV_VIEW_FIND_NEXT, 0); + jump_to_find_result (view); + } update_find_status_message (view, percent * n_pages >= n_pages - 1 ); if (view->current_page == page) gtk_widget_queue_draw (GTK_WIDGET (view)); @@ -3436,6 +3447,12 @@ ev_view_find_previous (EvView *view) } } +void ev_view_search_changed (EvView *view) +{ + /* search string has changed, focus on new search result */ + view->jump_to_find_result = TRUE; +} + /*** Selections ***/ /* compute_new_selection_rect/text calculates the area currently selected by