From ba0eb7fdc69141297af3f096b284dde4e1cc6115 Mon Sep 17 00:00:00 2001 From: Jonas Jenwald Date: Fri, 8 May 2015 11:48:07 +0200 Subject: [PATCH] Add the |location| to the |updateviewarea| UI event *This patch addresses an issue I stumbled upon while working on rewriting the history implementation.* Currently the `updateviewarea` UI event doesn't include the `location`, and in the event handler in viewer.js we instead reach into `PDFViewer` to retrieve it. Not only does this seem conceptually wrong, it also makes the `updateviewarea` event less useful in general since it's currently only possible to access the `location` if you have a reference to the `PDFViewer`. To me, this simply appears to be an oversight in the implementation, hence this patch which adds `location` to the `updateviewarea` event. It also changes `location` to be a "private" property of `PDFViewer`. --- web/pdf_viewer.js | 13 +++++++------ web/viewer.js | 5 ++--- 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/web/pdf_viewer.js b/web/pdf_viewer.js index 517116af0..82969fc43 100644 --- a/web/pdf_viewer.js +++ b/web/pdf_viewer.js @@ -326,7 +326,7 @@ var PDFViewer = (function pdfViewer() { this._currentScale = UNKNOWN_SCALE; this._currentScaleValue = null; this._buffer = new PDFPageViewBuffer(DEFAULT_CACHE_SIZE); - this.location = null; + this._location = null; this._pagesRotation = 0; this._pagesRequests = []; @@ -374,11 +374,11 @@ var PDFViewer = (function pdfViewer() { if (!noScroll) { var page = this._currentPageNumber, dest; - if (this.location && !IGNORE_CURRENT_POSITION_ON_ZOOM && + if (this._location && !IGNORE_CURRENT_POSITION_ON_ZOOM && !(this.isInPresentationMode || this.isChangingPresentationMode)) { - page = this.location.pageNumber; - dest = [null, { name: 'XYZ' }, this.location.left, - this.location.top, null]; + page = this._location.pageNumber; + dest = [null, { name: 'XYZ' }, this._location.left, + this._location.top, null]; } this.scrollPageIntoView(page, dest); } @@ -557,7 +557,7 @@ var PDFViewer = (function pdfViewer() { var intTop = Math.round(topLeft[1]); pdfOpenParams += ',' + intLeft + ',' + intTop; - this.location = { + this._location = { pageNumber: pageNumber, scale: normalizedScaleValue, top: intTop, @@ -611,6 +611,7 @@ var PDFViewer = (function pdfViewer() { var event = document.createEvent('UIEvents'); event.initUIEvent('updateviewarea', true, true, window, 0); + event.location = this._location; this.container.dispatchEvent(event); }, diff --git a/web/viewer.js b/web/viewer.js index 6a6389f43..ed4954337 100644 --- a/web/viewer.js +++ b/web/viewer.js @@ -1753,12 +1753,11 @@ function updateViewarea() { PDFViewerApplication.pdfViewer.update(); } -window.addEventListener('updateviewarea', function () { +window.addEventListener('updateviewarea', function (evt) { if (!PDFViewerApplication.initialized) { return; } - - var location = PDFViewerApplication.pdfViewer.location; + var location = evt.location; PDFViewerApplication.store.initializedPromise.then(function() { PDFViewerApplication.store.setMultiple({