From 7bca3c81a9440ae50d7b37d4f88630b742e8830a Mon Sep 17 00:00:00 2001 From: Jonas Jenwald Date: Wed, 29 Mar 2023 10:31:54 +0200 Subject: [PATCH] Fix CSS-only zooming in the viewer (PR 15812 follow-up) Currently if you e.g. enable the `useOnlyCssZoom` option rendering may no longer finish as intended. To reproduce: - Enable the `useOnlyCssZoom` option. - Load https://github.com/mozilla/pdf.js/files/1522715/wuppertal_2012.pdf (in the development viewer). - When rendering starts, *immediately* change the zoom-level. In this case the document will never finish rendering, since the `postponeDrawing`-functionality will (here incorrectly) abort rendering and with CSS-only zooming rendering is only expected to happen once per page. To fix this we'll simply ignore any `drawingDelay` when CSS-only zooming is used (regardless if it's triggered via the option or the zoom-level being very large). --- web/pdf_page_view.js | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/web/pdf_page_view.js b/web/pdf_page_view.js index 03053741a..664669a38 100644 --- a/web/pdf_page_view.js +++ b/web/pdf_page_view.js @@ -607,14 +607,13 @@ class PDFPageView { isScalingRestricted = true; } } - const postponeDrawing = drawingDelay >= 0 && drawingDelay < 1000; + const onlyCssZoom = + this.useOnlyCssZoom || (this.hasRestrictedScaling && isScalingRestricted); + const postponeDrawing = + !onlyCssZoom && drawingDelay >= 0 && drawingDelay < 1000; if (this.canvas) { - if ( - postponeDrawing || - this.useOnlyCssZoom || - (this.hasRestrictedScaling && isScalingRestricted) - ) { + if (postponeDrawing || onlyCssZoom) { if ( postponeDrawing && this.renderingState !== RenderingStates.FINISHED