gboolean first_page = FALSE;
gboolean last_page = FALSE;
+ view->jump_to_find_result = FALSE;
+
if (view->presentation) {
switch (scroll) {
case EV_SCROLL_STEP_BACKWARD:
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)
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,
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;
view->fullscreen = FALSE;
view->sizing_mode = EV_SIZING_FIT_WIDTH;
view->pending_scroll = SCROLL_TO_KEEP_POSITION;
+ view->jump_to_find_result = TRUE;
}
/*** Callbacks ***/
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));
}
}
+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