[evince] libview: Actually update the page when moving the care from a different page



commit bf8503031c46dbb3cb65ead9d85348672c98c1d6
Author: Carlos Garcia Campos <carlosgc gnome org>
Date:   Thu Jun 13 21:00:48 2013 +0200

    libview: Actually update the page when moving the care from a different page
    
    I removed the line to set the current page after moving the caret cursor
    by mistake. Add it back and change cursor_go_to_next/previous_page to
    not update the page, but only update the cursor_page so that we have a
    single place where the page is updated after caret cursor moves.

 libview/ev-view.c |   66 ++++++++++++++++++++++++++++++++++------------------
 1 files changed, 43 insertions(+), 23 deletions(-)
---
diff --git a/libview/ev-view.c b/libview/ev-view.c
index 11d8046..ad3dd01 100644
--- a/libview/ev-view.c
+++ b/libview/ev-view.c
@@ -4611,7 +4611,7 @@ ev_view_forward_key_event_to_focused_child (EvView      *view,
        return handled;
 }
 
-static gboolean
+static gint
 go_to_next_page (EvView *view,
                 gint    page)
 {
@@ -4619,7 +4619,7 @@ go_to_next_page (EvView *view,
        gboolean dual_page;
 
        if (!view->document)
-               return FALSE;
+               return -1;
 
        n_pages = ev_document_get_n_pages (view->document);
 
@@ -4627,35 +4627,33 @@ go_to_next_page (EvView *view,
        page += dual_page ? 2 : 1;
 
        if (page < n_pages)
-               ev_document_model_set_page (view->model, page);
-       else if (dual_page && page == n_pages)
-               ev_document_model_set_page (view->model, page - 1);
-       else
-               return FALSE;
+               return page;
 
-       return TRUE;
+       if (dual_page && page == n_pages)
+               return page - 1;
+
+       return -1;
 }
 
-static gboolean
+static gint
 go_to_previous_page (EvView *view,
                     gint    page)
 {
        gboolean dual_page;
 
        if (!view->document)
-               return FALSE;
+               return -1;
 
        dual_page = is_dual_page (view, NULL);
        page -= dual_page ? 2 : 1;
 
        if (page >= 0)
-               ev_document_model_set_page (view->model, page);
-       else if (dual_page && page == -1)
-               ev_document_model_set_page (view->model, 0);
-       else
-               return FALSE;
+               return page;
 
-       return TRUE;
+       if (dual_page && page == -1)
+               return 0;
+
+       return -1;
 }
 
 static gboolean
@@ -4687,8 +4685,11 @@ cursor_go_to_page_end (EvView *view)
 static gboolean
 cursor_go_to_next_page (EvView *view)
 {
-       if (go_to_next_page (view, view->cursor_page)) {
-               view->cursor_page = ev_document_model_get_page (view->model);
+       gint new_page;
+
+       new_page = go_to_next_page (view, view->cursor_page);
+       if (new_page != -1) {
+               view->cursor_page = new_page;
                return cursor_go_to_page_start (view);
        }
 
@@ -4698,8 +4699,11 @@ cursor_go_to_next_page (EvView *view)
 static gboolean
 cursor_go_to_previous_page (EvView *view)
 {
-       if (go_to_previous_page (view, view->cursor_page)) {
-               view->cursor_page = ev_document_model_get_page (view->model);
+       gint new_page;
+
+       new_page = go_to_previous_page (view, view->cursor_page);
+       if (new_page != -1) {
+               view->cursor_page = new_page;
                return cursor_go_to_page_end (view);
        }
        return FALSE;
@@ -4955,6 +4959,7 @@ caret_key_press_event (EvView      *view,
                if (!get_caret_cursor_rect_from_offset (view, view->cursor_offset, view->cursor_page, 
&view_rect))
                        return TRUE;
 
+               ev_document_model_set_page (view->model, view->cursor_page);
                ensure_rectangle_is_visible (view, &view_rect);
                gtk_widget_queue_draw (GTK_WIDGET (view));
        }
@@ -7343,16 +7348,31 @@ ev_view_show_cursor (EvView *view)
 gboolean
 ev_view_next_page (EvView *view)
 {
+       gint next_page;
+
        g_return_val_if_fail (EV_IS_VIEW (view), FALSE);
 
-       return go_to_next_page (view, view->current_page);
+       next_page = go_to_next_page (view, view->current_page);
+       if (next_page == -1)
+               return FALSE;
+
+       ev_document_model_set_page (view->model, next_page);
+
+       return TRUE;
 }
 
 gboolean
 ev_view_previous_page (EvView *view)
 {
+       gint prev_page;
+
        g_return_val_if_fail (EV_IS_VIEW (view), FALSE);
 
-       return go_to_previous_page (view, view->current_page);
+       prev_page = go_to_previous_page (view, view->current_page);
+       if (prev_page == -1)
+               return FALSE;
+
+       ev_document_model_set_page (view->model, prev_page);
+
+       return TRUE;
 }
-               


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]