Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--ChangeLog7
-rw-r--r--shell/ev-window.c21
2 files changed, 19 insertions, 9 deletions
diff --git a/ChangeLog b/ChangeLog
index 18be5f6..9a93f80 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,12 @@
2009-03-01 Carlos Garcia Campos <carlosgc@gnome.org>
+ * shell/ev-window.c: (ev_window_set_document),
+ (ev_window_reload_job_cb):
+
+ Do not lose page position when reloading. Fixes bug #573091.
+
+2009-03-01 Carlos Garcia Campos <carlosgc@gnome.org>
+
* backend/pdf/ev-poppler.cc: (make_thumbnail_for_page),
(pdf_document_thumbnails_get_thumbnail),
(pdf_document_thumbnails_get_dimensions):
diff --git a/shell/ev-window.c b/shell/ev-window.c
index f950c9b..455c6a5 100644
--- a/shell/ev-window.c
+++ b/shell/ev-window.c
@@ -1248,6 +1248,18 @@ ev_window_set_document (EvWindow *ev_window, EvDocument *document)
g_signal_connect (ev_window->priv->page_cache, "history-changed",
G_CALLBACK (history_changed_cb), ev_window);
+ if (ev_window->priv->in_reload && ev_window->priv->dest) {
+ gint page;
+
+ /* Restart the current page */
+ page = CLAMP (ev_link_dest_get_page (ev_window->priv->dest),
+ 0,
+ ev_page_cache_get_n_pages (ev_window->priv->page_cache) - 1);
+ ev_page_cache_set_current_page (ev_window->priv->page_cache, page);
+ g_object_unref (ev_window->priv->dest);
+ ev_window->priv->dest = NULL;
+ }
+
if (ev_page_cache_get_n_pages (ev_window->priv->page_cache) > 0) {
ev_view_set_document (view, document);
} else {
@@ -1486,7 +1498,6 @@ ev_window_reload_job_cb (EvJob *job,
EvWindow *ev_window)
{
GtkWidget *widget;
- gint page;
if (ev_job_is_failed (job)) {
ev_window_clear_reload_job (ev_window);
@@ -1498,14 +1509,6 @@ ev_window_reload_job_cb (EvJob *job,
}
ev_window_set_document (ev_window, job->document);
-
- /* Restart the current page */
- page = CLAMP (ev_link_dest_get_page (ev_window->priv->dest),
- 0,
- ev_page_cache_get_n_pages (ev_window->priv->page_cache) - 1);
- ev_page_cache_set_current_page (ev_window->priv->page_cache, page);
- g_object_unref (ev_window->priv->dest);
- ev_window->priv->dest = NULL;
/* Restart the search after reloading */
widget = gtk_window_get_focus (GTK_WINDOW (ev_window));