]> www.fi.muni.cz Git - evince.git/commitdiff
Dont't jump to find result if window was scrolled during search. Fix for
authorNickolay V. Shmyrev <nshmyrev@src.gnome.org>
Fri, 24 Feb 2006 18:52:02 +0000 (18:52 +0000)
committerNickolay V. Shmyrev <nshmyrev@src.gnome.org>
Fri, 24 Feb 2006 18:52:02 +0000 (18:52 +0000)
* shell/ev-view-private.h:
* shell/ev-view.c: (ev_view_scroll), (ev_view_scroll_event),
(ev_view_init), (find_changed_cb), (ev_view_find_previous),
(ev_view_search_changed):
* shell/ev-view.h:
* shell/ev-window.c: (find_bar_search_changed_cb):

Dont't jump to find result if window was scrolled during search.
Fix for the bug #313266.

ChangeLog
shell/ev-view-private.h
shell/ev-view.c
shell/ev-view.h
shell/ev-window.c

index dbc914b3a5ff630f1deab88df9511112467a059e..dbc9b7386bde1aea624a67605b5cdbfa3c2b1df6 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,15 @@
+2006-02-24  Stanislav Slusny <slusnys@gmail.com>
+
+       * shell/ev-view-private.h:
+       * shell/ev-view.c: (ev_view_scroll), (ev_view_scroll_event),
+       (ev_view_init), (find_changed_cb), (ev_view_find_previous),
+       (ev_view_search_changed):
+       * shell/ev-view.h:
+       * shell/ev-window.c: (find_bar_search_changed_cb):
+       
+       Dont't jump to find result if window was scrolled during search.
+       Fix for the bug #313266.
+
 2006-02-21  Stanislav Slusny <slusnys@gmail.com>
 
        * shell/eggfindbar.c: (egg_find_bar_class_init):
index b5831e4fbe5413829cd0d55434919c7e79be6a40..1d09cb372f00d977509689363775c37082e12b84 100644 (file)
@@ -64,6 +64,7 @@ struct _EvView {
        char *status;
        char *find_status;
        int find_result;
+       gboolean jump_to_find_result;
        
        EvPageCache *page_cache;
        EvPixbufCache *pixbuf_cache;
index 2e4752b75ccf8a9eeb26844389ce012ddfd9f745..7e77f2e0e438a45afcc5b2c641144f57464e9a12 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)
@@ -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->jump_to_find_result = TRUE;
 }
 
 /*** 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);
-       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 +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
index 90f5031efdda4739740b49b2cab775584ad07f07..dc00ff3659f37b18b0afd75a8310aabebf91d544 100644 (file)
@@ -122,6 +122,7 @@ int             ev_view_get_rotation      (EvView         *view);
 gboolean       ev_view_can_find_next     (EvView         *view);
 void            ev_view_find_next         (EvView         *view);
 void            ev_view_find_previous     (EvView         *view);
+void            ev_view_search_changed    (EvView         *view);
 
 /* Status */
 const char     *ev_view_get_status        (EvView         *view);
index 61e7b1f6ae390e8d5ee1434b75c59c84126c1c46..944a469663bf25a9c4a4255c8f4e2175b997b8d1 100644 (file)
@@ -2621,6 +2621,7 @@ find_bar_search_changed_cb (EggFindBar *find_bar,
 #if 0
        g_printerr ("search for '%s'\n", search_string ? search_string : "(nil)");
 #endif
+       ev_view_search_changed (EV_VIEW(ev_window->priv->view));
 
        if (ev_window->priv->document &&
            EV_IS_DOCUMENT_FIND (ev_window->priv->document)) {