]> www.fi.muni.cz Git - evince.git/blobdiff - shell/ev-view.c
Updated Traditional Chinese translation(Taiwan). Updated Traditional
[evince.git] / shell / ev-view.c
index 2e4752b75ccf8a9eeb26844389ce012ddfd9f745..e599059099aff435f3220fc3de051ed059e38b49 100644 (file)
@@ -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