]> www.fi.muni.cz Git - evince.git/blobdiff - libview/ev-view.c
[libdocument] Do not require GAppInfo to support uris when opening an attachment
[evince.git] / libview / ev-view.c
index 973da901eb5be6aaaa2f7194e47873086be2d3e3..6417a43c6f949032c9c3e0bc64f4adc812a843e4 100644 (file)
@@ -609,8 +609,6 @@ view_set_adjustment_values (EvView         *view,
 static void
 view_update_range_and_current_page (EvView *view)
 {
-       gint current_page;
-       gint best_current_page = -1;
        gint start = view->start_page;
        gint end = view->end_page;
        
@@ -623,6 +621,7 @@ view_update_range_and_current_page (EvView *view)
                GtkBorder border;
                gboolean found = FALSE;
                gint area_max = -1, area;
+               gint best_current_page = -1;
                int i;
 
                if (!(view->vadjustment && view->hadjustment))
@@ -657,12 +656,20 @@ view_update_range_and_current_page (EvView *view)
                        }
                }
 
+               if (view->pending_scroll == SCROLL_TO_KEEP_POSITION) {
+                       best_current_page = MAX (best_current_page, view->start_page);
+
+                       if (view->current_page != best_current_page) {
+                               view->current_page = best_current_page;
+                               ev_document_model_set_page (view->model, best_current_page);
+                       }
+               }
        } else if (view->dual_page) {
                if (view->current_page % 2 == get_dual_even_left (view)) {
                        view->start_page = view->current_page;
                        if (view->current_page + 1 < ev_document_get_n_pages (view->document))
                                view->end_page = view->start_page + 1;
-                       else 
+                       else
                                view->end_page = view->start_page;
                } else {
                        if (view->current_page < 1)
@@ -676,14 +683,6 @@ view_update_range_and_current_page (EvView *view)
                view->end_page = view->current_page;
        }
 
-       best_current_page = MAX (best_current_page, view->start_page);
-       current_page = ev_document_model_get_page (view->model);
-
-       if ((current_page != best_current_page) && (view->pending_scroll == SCROLL_TO_KEEP_POSITION)) {
-               view->current_page = best_current_page;
-               ev_document_model_set_page (view->model, best_current_page);
-       }
-
        if (start != view->start_page || end != view->end_page) {
                gint i;
 
@@ -702,6 +701,9 @@ view_update_range_and_current_page (EvView *view)
                                        view->rotation,
                                        view->scale,
                                        view->selection_info.selections);
+
+       if (ev_pixbuf_cache_get_surface (view->pixbuf_cache, view->current_page))
+           gtk_widget_queue_draw (GTK_WIDGET (view));
 }
 
 static void