]> www.fi.muni.cz Git - evince.git/blobdiff - shell/ev-view.c
Dont't jump to find result if window was scrolled during search. Fix for
[evince.git] / shell / ev-view.c
index 2e4752b75ccf8a9eeb26844389ce012ddfd9f745..7e77f2e0e438a45afcc5b2c641144f57464e9a12 100644 (file)
@@ -569,6 +569,8 @@ ev_view_scroll (EvView        *view,
        gboolean first_page = FALSE;
        gboolean last_page = FALSE;
 
        gboolean first_page = FALSE;
        gboolean last_page = FALSE;
 
+       view->jump_to_find_result = FALSE;
+
        if (view->presentation) {
                switch (scroll) {
                        case EV_SCROLL_STEP_BACKWARD:
        if (view->presentation) {
                switch (scroll) {
                        case EV_SCROLL_STEP_BACKWARD:
@@ -1540,6 +1542,7 @@ ev_view_scroll_event (GtkWidget *widget, GdkEventScroll *event)
                return TRUE;
        }
 
                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)
        /* Shift+Wheel scrolls the in the perpendicular direction */
        if (state & GDK_SHIFT_MASK) {
                if (event->direction == GDK_SCROLL_UP)
@@ -2568,6 +2571,7 @@ ev_view_init (EvView *view)
        view->fullscreen = FALSE;
        view->sizing_mode = EV_SIZING_FIT_WIDTH;
        view->pending_scroll = SCROLL_TO_KEEP_POSITION;
        view->fullscreen = FALSE;
        view->sizing_mode = EV_SIZING_FIT_WIDTH;
        view->pending_scroll = SCROLL_TO_KEEP_POSITION;
+       view->jump_to_find_result = TRUE;
 }
 
 /*** Callbacks ***/
 }
 
 /*** Callbacks ***/
@@ -2581,8 +2585,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);
        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));
        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 +3443,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
 /*** Selections ***/
 
 /* compute_new_selection_rect/text calculates the area currently selected by