From 03497eabd5521280352780777db251066d787c45 Mon Sep 17 00:00:00 2001 From: Jonas Jenwald Date: Tue, 31 Mar 2015 15:33:21 +0200 Subject: [PATCH 1/3] Move fetching of the |defaultZoomValue| preference value to |PDFViewerApplication.initialize| For consistency, this preference should be placed amongst the others. The current position is purely for "historical" reasons, since it was one of the first preferences that was added to the code. --- web/viewer.js | 21 ++++++++------------- 1 file changed, 8 insertions(+), 13 deletions(-) diff --git a/web/viewer.js b/web/viewer.js index 2f3642647..fe3b226a7 100644 --- a/web/viewer.js +++ b/web/viewer.js @@ -111,6 +111,7 @@ var PDFViewerApplication = { preferenceSidebarViewOnLoad: SidebarView.NONE, preferencePdfBugEnabled: false, preferenceShowPreviousViewOnLoad: true, + preferenceDefaultZoomValue: '', isViewerEmbedded: (window.parent !== window), url: '', @@ -235,6 +236,9 @@ var PDFViewerApplication = { window.history.replaceState(null, ''); } }), + Preferences.get('defaultZoomValue').then(function resolved(value) { + self.preferenceDefaultZoomValue = value; + }), Preferences.get('disableTextLayer').then(function resolved(value) { if (PDFJS.disableTextLayer === true) { return; @@ -259,7 +263,6 @@ var PDFViewerApplication = { Preferences.get('useOnlyCssZoom').then(function resolved(value) { PDFJS.useOnlyCssZoom = value; }) - // TODO move more preferences and other async stuff here ]).catch(function (reason) { }); @@ -885,29 +888,21 @@ var PDFViewerApplication = { } }); - // Fetch the necessary preference values. - var defaultZoomValue; - var defaultZoomValuePromise = - Preferences.get('defaultZoomValue').then(function (prefValue) { - defaultZoomValue = prefValue; - }); - var storePromise = store.initializedPromise; - Promise.all([firstPagePromise, storePromise, defaultZoomValuePromise]).then( - function resolved() { + Promise.all([firstPagePromise, storePromise]).then(function resolved() { var storedHash = null; if (PDFViewerApplication.preferenceShowPreviousViewOnLoad && store.get('exists', false)) { var pageNum = store.get('page', '1'); - var zoom = defaultZoomValue || + var zoom = self.preferenceDefaultZoomValue || store.get('zoom', self.pdfViewer.currentScale); var left = store.get('scrollLeft', '0'); var top = store.get('scrollTop', '0'); storedHash = 'page=' + pageNum + '&zoom=' + zoom + ',' + left + ',' + top; - } else if (defaultZoomValue) { - storedHash = 'page=1&zoom=' + defaultZoomValue; + } else if (self.preferenceDefaultZoomValue) { + storedHash = 'page=1&zoom=' + self.preferenceDefaultZoomValue; } self.setInitialView(storedHash, scale); From 6091e7bd6bdd41e80a4d49abf2054d4e9e56eb45 Mon Sep 17 00:00:00 2001 From: Jonas Jenwald Date: Tue, 31 Mar 2015 17:14:08 +0200 Subject: [PATCH 2/3] Move the code that resets the history state when the |showPreviousViewOnLoad| preference is set to |false| Since this code is *only* necessary if/when the history is actually enabled, this patch refactors it to actually reflect that. --- web/viewer.js | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/web/viewer.js b/web/viewer.js index fe3b226a7..5b11a14b2 100644 --- a/web/viewer.js +++ b/web/viewer.js @@ -232,9 +232,6 @@ var PDFViewerApplication = { }), Preferences.get('showPreviousViewOnLoad').then(function resolved(value) { self.preferenceShowPreviousViewOnLoad = value; - if (!value && window.history.state) { - window.history.replaceState(null, ''); - } }), Preferences.get('defaultZoomValue').then(function resolved(value) { self.preferenceDefaultZoomValue = value; @@ -884,6 +881,9 @@ var PDFViewerApplication = { if (!PDFJS.disableHistory && !self.isViewerEmbedded) { // The browsing history is only enabled when the viewer is standalone, // i.e. not when it is embedded in a web page. + if (!self.preferenceShowPreviousViewOnLoad && window.history.state) { + window.history.replaceState(null, ''); + } PDFHistory.initialize(self.documentFingerprint, self); } }); @@ -891,7 +891,7 @@ var PDFViewerApplication = { var storePromise = store.initializedPromise; Promise.all([firstPagePromise, storePromise]).then(function resolved() { var storedHash = null; - if (PDFViewerApplication.preferenceShowPreviousViewOnLoad && + if (self.preferenceShowPreviousViewOnLoad && store.get('exists', false)) { var pageNum = store.get('page', '1'); var zoom = self.preferenceDefaultZoomValue || From e5c48196019438eda0ce1dc636d55dde67b0ccb0 Mon Sep 17 00:00:00 2001 From: Jonas Jenwald Date: Tue, 31 Mar 2015 18:17:56 +0200 Subject: [PATCH 3/3] Small refactoring of the code that calls |PDFViewerApplication.setInitialView| This is a minor cleanup, to avoid an unnecessary `Promise.all` and to simplify catching |ViewHistory| errors. --- web/viewer.js | 50 +++++++++++++++++++++++--------------------------- 1 file changed, 23 insertions(+), 27 deletions(-) diff --git a/web/viewer.js b/web/viewer.js index 5b11a14b2..ccf940fac 100644 --- a/web/viewer.js +++ b/web/viewer.js @@ -886,38 +886,34 @@ var PDFViewerApplication = { } PDFHistory.initialize(self.documentFingerprint, self); } - }); - var storePromise = store.initializedPromise; - Promise.all([firstPagePromise, storePromise]).then(function resolved() { - var storedHash = null; - if (self.preferenceShowPreviousViewOnLoad && - store.get('exists', false)) { - var pageNum = store.get('page', '1'); - var zoom = self.preferenceDefaultZoomValue || - store.get('zoom', self.pdfViewer.currentScale); - var left = store.get('scrollLeft', '0'); - var top = store.get('scrollTop', '0'); + store.initializedPromise.then(function resolved() { + var storedHash = null; + if (self.preferenceShowPreviousViewOnLoad && + store.get('exists', false)) { + var pageNum = store.get('page', '1'); + var zoom = self.preferenceDefaultZoomValue || + store.get('zoom', self.pdfViewer.currentScale); + var left = store.get('scrollLeft', '0'); + var top = store.get('scrollTop', '0'); - storedHash = 'page=' + pageNum + '&zoom=' + zoom + ',' + - left + ',' + top; - } else if (self.preferenceDefaultZoomValue) { - storedHash = 'page=1&zoom=' + self.preferenceDefaultZoomValue; - } - self.setInitialView(storedHash, scale); + storedHash = 'page=' + pageNum + '&zoom=' + zoom + ',' + + left + ',' + top; + } else if (self.preferenceDefaultZoomValue) { + storedHash = 'page=1&zoom=' + self.preferenceDefaultZoomValue; + } + self.setInitialView(storedHash, scale); - // Make all navigation keys work on document load, - // unless the viewer is embedded in a web page. - if (!self.isViewerEmbedded) { - self.pdfViewer.focus(); + // Make all navigation keys work on document load, + // unless the viewer is embedded in a web page. + if (!self.isViewerEmbedded) { + self.pdfViewer.focus(); //#if (FIREFOX || MOZCENTRAL) -// self.pdfViewer.blur(); +// self.pdfViewer.blur(); //#endif - } - }, function rejected(reason) { - console.error(reason); - - firstPagePromise.then(function () { + } + }, function rejected(reason) { + console.error(reason); self.setInitialView(null, scale); }); });