From: Wouter Bolsterlee Date: Wed, 20 Dec 2006 14:03:21 +0000 (+0000) Subject: Make sure Evince doesn't restore the view on the last page when a document X-Git-Tag: EVINCE_0_7_1~53 X-Git-Url: https://www.fi.muni.cz/~kas/git//home/kas/public_html/git/?a=commitdiff_plain;h=6cc40fe44384df3cb2a6c43b8823d0d940254039;p=evince.git Make sure Evince doesn't restore the view on the last page when a document 2006-12-20 Wouter Bolsterlee * shell/ev-window.c: (setup_document_from_metadata): Make sure Evince doesn't restore the view on the last page when a document is reopened. Fixes bug #383381. --- diff --git a/ChangeLog b/ChangeLog index 817908fa..ab0913c3 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,10 @@ +2006-12-20 Wouter Bolsterlee + + * shell/ev-window.c: (setup_document_from_metadata): + + Make sure Evince doesn't restore the view on the last + page when a document is reopened. Fixes bug #383381. + 2006-12-18 Jens Granseuer * shell/ev-view.c: (draw_loading_text): diff --git a/shell/ev-window.c b/shell/ev-window.c index 2aaff161..9eac43f9 100644 --- a/shell/ev-window.c +++ b/shell/ev-window.c @@ -664,10 +664,18 @@ setup_document_from_metadata (EvWindow *window) { char *uri = window->priv->uri; GValue page = { 0, }; + gint n_pages; gint new_page; + /* View the previously shown page, but make sure to not open a document on + * the last page, since closing it on the last page most likely means the + * user was finished reading the document. In that case, reopening should + * show the first page. */ if (uri && ev_metadata_manager_get (uri, "page", &page, TRUE)) { - new_page = CLAMP (g_value_get_int (&page), 0, ev_page_cache_get_n_pages (window->priv->page_cache) - 1); + n_pages = ev_page_cache_get_n_pages (window->priv->page_cache); + new_page = CLAMP (g_value_get_int (&page), 0, n_pages - 1); + if (new_page == n_pages - 1) + new_page = 0; ev_page_cache_set_current_page (window->priv->page_cache, new_page); g_value_unset (&page);