Tweak the pdfOpenParams parameter, in the "updateviewarea" event, in PresentationMode

The `pdfOpenParams` parameter has never really made sense in PresentationMode, since e.g. the zoom-value doesn't (generally) agree with the value chosen by the user prior to entering PresentationMode.
This has never mattered all that much, since the `viewBookmark`-button isn't visible in PresentationMode (nor is any other toolbar button for that matter). However, in the `PDFHistory`-implementation we're currently forced to handle this case specifically since we don't want to populate the browser history with nonsensical state.
Hence it makes overall sense, as far as I'm concerned, to tweak the "updateviewarea" event to include a *simplified* `pdfOpenParams` parameter when PresentationMode is active. Given that the `viewer components` don't include PresentationMode functionality, this change thus shouldn't matter for third-party users.
This commit is contained in:
Jonas Jenwald 2022-04-05 13:56:51 +02:00
parent 5ef294b3a7
commit 55838303c7
2 changed files with 9 additions and 18 deletions

View File

@ -1321,8 +1321,6 @@ class BaseViewer {
: currentScaleValue;
const pageNumber = firstPage.id;
let pdfOpenParams = "#page=" + pageNumber;
pdfOpenParams += "&zoom=" + normalizedScaleValue;
const currentPageView = this._pages[pageNumber - 1];
const container = this.container;
const topLeft = currentPageView.getPagePoint(
@ -1331,7 +1329,11 @@ class BaseViewer {
);
const intLeft = Math.round(topLeft[0]);
const intTop = Math.round(topLeft[1]);
pdfOpenParams += "," + intLeft + "," + intTop;
let pdfOpenParams = `#page=${pageNumber}`;
if (!this.isInPresentationMode) {
pdfOpenParams += `&zoom=${normalizedScaleValue},${intLeft},${intTop}`;
}
this._location = {
pageNumber,

View File

@ -16,11 +16,7 @@
/** @typedef {import("./event_utils").EventBus} EventBus */
/** @typedef {import("./interfaces").IPDFLinkService} IPDFLinkService */
import {
isValidRotation,
parseQueryString,
PresentationModeState,
} from "./ui_utils.js";
import { isValidRotation, parseQueryString } from "./ui_utils.js";
import { waitOnEventOrTimeout } from "./event_utils.js";
// Heuristic value used when force-resetting `this._blockHashChange`.
@ -69,13 +65,8 @@ class PDFHistory {
this.reset();
this._boundEvents = null;
this._isViewerInPresentationMode = false;
// Ensure that we don't miss either a 'presentationmodechanged' or a
// 'pagesinit' event, by registering the listeners immediately.
this.eventBus._on("presentationmodechanged", evt => {
this._isViewerInPresentationMode =
evt.state !== PresentationModeState.NORMAL;
});
// Ensure that we don't miss a "pagesinit" event,
// by registering the listener immediately.
this.eventBus._on("pagesinit", () => {
this._isPagesLoaded = false;
@ -566,9 +557,7 @@ class PDFHistory {
}
this._position = {
hash: this._isViewerInPresentationMode
? `page=${location.pageNumber}`
: location.pdfOpenParams.substring(1),
hash: location.pdfOpenParams.substring(1),
page: this.linkService.page,
first: location.pageNumber,
rotation: location.rotation,