From f341d81ae843633c23710c28878bf1c830259eab Mon Sep 17 00:00:00 2001 From: Jonas Jenwald Date: Thu, 19 Nov 2015 12:31:49 +0100 Subject: [PATCH] Ensure that the `hidden` attribute is always removed from the canvas when rendering is complete (issue 6661) Fixes 6661. --- web/pdf_page_view.js | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/web/pdf_page_view.js b/web/pdf_page_view.js index 561ac8116..52b3f59df 100644 --- a/web/pdf_page_view.js +++ b/web/pdf_page_view.js @@ -308,7 +308,11 @@ var PDFPageView = (function PDFPageViewClosure() { var canvas = document.createElement('canvas'); canvas.id = 'page' + this.id; + // Keep the canvas hidden until the first draw callback, or until drawing + // is complete when `!this.renderingQueue`, to prevent black flickering. canvas.setAttribute('hidden', 'hidden'); + var isCanvasHidden = true; + canvasWrapper.appendChild(canvas); if (this.annotationLayer && this.annotationLayer.div) { // annotationLayer needs to stay on top @@ -316,7 +320,6 @@ var PDFPageView = (function PDFPageViewClosure() { } else { div.appendChild(canvasWrapper); } - var isCanvasHidden = true; this.canvas = canvas; //#if MOZCENTRAL || FIREFOX || GENERIC @@ -401,6 +404,11 @@ var PDFPageView = (function PDFPageViewClosure() { self.renderingState = RenderingStates.FINISHED; + if (isCanvasHidden) { + self.canvas.removeAttribute('hidden'); + isCanvasHidden = false; + } + if (self.loadingIconDiv) { div.removeChild(self.loadingIconDiv); delete self.loadingIconDiv;