From d6ca563f46aef012e534b2a0c1ab0d84afbeaf7f Mon Sep 17 00:00:00 2001 From: Jonas Jenwald Date: Mon, 10 Feb 2014 13:43:26 +0100 Subject: [PATCH] Fix wrong page being displayed when entering/exiting Presentation mode with zoom set to 'page-fit' --- web/page_view.js | 7 ++++++- web/viewer.js | 20 +++++++++++++++----- 2 files changed, 21 insertions(+), 6 deletions(-) diff --git a/web/page_view.js b/web/page_view.js index a02864f06..a0de5d8f5 100644 --- a/web/page_view.js +++ b/web/page_view.js @@ -329,7 +329,12 @@ var PageView = function pageView(container, id, scale, }; this.scrollIntoView = function pageViewScrollIntoView(dest) { - if (PresentationMode.active) { // Avoid breaking presentation mode. + if (PresentationMode.active) { + if (PDFView.page !== this.id) { + // Avoid breaking PDFView.getVisiblePages in presentation mode. + PDFView.page = this.id; + return; + } dest = null; PDFView.setScale(PDFView.currentScaleValue, true, true); } diff --git a/web/viewer.js b/web/viewer.js index e5ce5b422..cd6b720ee 100644 --- a/web/viewer.js +++ b/web/viewer.js @@ -1321,8 +1321,16 @@ var PDFView = { }, getVisiblePages: function pdfViewGetVisiblePages() { - return this.getVisibleElements(this.container, this.pages, - !PresentationMode.active); + if (!PresentationMode.active) { + return this.getVisibleElements(this.container, this.pages, true); + } else { + // The algorithm in getVisibleElements doesn't work in all browsers and + // configurations when presentation mode is active. + var visible = []; + var currentPage = this.pages[this.page - 1]; + visible.push({ id: currentPage.id, view: currentPage }); + return { first: currentPage, last: currentPage, views: visible }; + } }, getVisibleThumbs: function pdfViewGetVisibleThumbs() { @@ -1869,9 +1877,11 @@ function updateViewarea() { currentId = visiblePages[0].id; } - updateViewarea.inProgress = true; // used in "set page" - PDFView.page = currentId; - updateViewarea.inProgress = false; + if (!PresentationMode.active) { + updateViewarea.inProgress = true; // used in "set page" + PDFView.page = currentId; + updateViewarea.inProgress = false; + } var currentScale = PDFView.currentScale; var currentScaleValue = PDFView.currentScaleValue;