diff --git a/web/app.js b/web/app.js index 749b829fb..c53ebc71e 100644 --- a/web/app.js +++ b/web/app.js @@ -2004,6 +2004,27 @@ const PDFViewerApplication = { bindWindowEvents() { const { eventBus, _boundEvents } = this; + function addWindowResolutionChange(evt = null) { + if (evt) { + webViewerResolutionChange(evt); + } + const mediaQueryList = window.matchMedia( + `(resolution: ${window.devicePixelRatio || 1}dppx)` + ); + mediaQueryList.addEventListener("change", addWindowResolutionChange, { + once: true, + }); + + if (typeof PDFJSDev !== "undefined" && PDFJSDev.test("MOZCENTRAL")) { + return; + } + _boundEvents.removeWindowResolutionChange ||= function () { + mediaQueryList.removeEventListener("change", addWindowResolutionChange); + _boundEvents.removeWindowResolutionChange = null; + }; + } + addWindowResolutionChange(); + _boundEvents.windowResize = () => { eventBus.dispatch("resize", { source: window }); }; @@ -2123,6 +2144,7 @@ const PDFViewerApplication = { _boundEvents.windowUpdateFromSandbox ); + _boundEvents.removeWindowResolutionChange?.(); _boundEvents.windowResize = null; _boundEvents.windowHashChange = null; _boundEvents.windowBeforePrint = null; @@ -2689,6 +2711,10 @@ function webViewerPageChanging({ pageNumber, pageLabel }) { } } +function webViewerResolutionChange(evt) { + PDFViewerApplication.pdfViewer.refresh(); +} + function webViewerVisibilityChange(evt) { if (document.visibilityState === "visible") { // Ignore mouse wheel zooming during tab switches (bug 1503412). diff --git a/web/base_viewer.js b/web/base_viewer.js index e1541235f..5ff689585 100644 --- a/web/base_viewer.js +++ b/web/base_viewer.js @@ -2247,6 +2247,17 @@ class BaseViewer { } this.#annotationEditorUIManager.updateParams(type, value); } + + refresh() { + if (!this.pdfDocument) { + return; + } + const updateArgs = {}; + for (const pageView of this._pages) { + pageView.update(updateArgs); + } + this.update(); + } } export { BaseViewer, PagesCountLimit, PDFPageViewBuffer };