1
0
Fork 0
mirror of https://github.com/mozilla/pdf.js.git synced 2025-04-19 14:48:08 +02:00

Merge pull request #19204 from calixteman/set_canvas_as_first_child

Make sure the canvas is always the first child of its wrapper
This commit is contained in:
calixteman 2024-12-09 21:28:21 +01:00 committed by GitHub
commit f9ae9b06e8
No known key found for this signature in database
GPG key ID: B5690EEEBB952194

View file

@ -975,6 +975,10 @@ class PDFPageView {
const hasHCM = !!(pageColors?.background && pageColors?.foreground);
const prevCanvas = this.canvas;
// In HCM, a final filter is applied on the canvas which means that
// before it's applied we've normal colors. Consequently, to avoid to
// have a final flash we just display it once all the drawing is done.
const updateOnFirstShow = !prevCanvas && !hasHCM;
this.canvas = canvas;
this.#originalViewport = viewport;
@ -984,7 +988,13 @@ class PDFPageView {
// Don't add the canvas until the first draw callback, or until
// drawing is complete when `!this.renderingQueue`, to prevent black
// flickering.
canvasWrapper.append(canvas);
// In whatever case, the canvas must be the first child.
const { firstChild } = canvasWrapper;
if (firstChild) {
firstChild.before(canvas);
} else {
canvasWrapper.append(canvas);
}
showCanvas = null;
return;
}
@ -996,10 +1006,12 @@ class PDFPageView {
prevCanvas.replaceWith(canvas);
prevCanvas.width = prevCanvas.height = 0;
} else {
// In HCM, a final filter is applied on the canvas which means that
// before it's applied we've normal colors. Consequently, to avoid to
// have a final flash we just display it once all the drawing is done.
canvasWrapper.append(canvas);
const { firstChild } = canvasWrapper;
if (firstChild) {
firstChild.before(canvas);
} else {
canvasWrapper.append(canvas);
}
}
showCanvas = null;