Merge pull request #17177 from Snuffleupagus/xfaLayer-pause-l10n

Pause translation when appending the xfaLayer to the page
This commit is contained in:
calixteman 2023-10-25 21:46:49 +02:00 committed by GitHub
commit fbfacf8828
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 13 additions and 6 deletions

View File

@ -76,11 +76,11 @@ const NullL10n = {
},
pause() {
ConstL10n.instance.pause();
return ConstL10n.instance.pause();
},
resume() {
ConstL10n.instance.resume();
return ConstL10n.instance.resume();
},
};

View File

@ -359,12 +359,23 @@ class PDFPageView {
try {
const result = await this.xfaLayer.render(this.viewport, "display");
if (result?.textDivs && this._textHighlighter) {
// Given that the following method fetches the text asynchronously we
// can invoke it *before* appending the xfaLayer to the DOM (below),
// since a pending search-highlight/scroll operation thus won't run
// until after the xfaLayer is available in the viewer.
this.#buildXfaTextContentItems(result.textDivs);
}
} catch (ex) {
console.error(`#renderXfaLayer: "${ex}".`);
error = ex;
} finally {
if (this.xfaLayer?.div) {
// Pause translation when inserting the xfaLayer in the DOM.
this.l10n.pause();
this.div.append(this.xfaLayer.div);
this.l10n.resume();
}
this.eventBus.dispatch("xfalayerrendered", {
source: this,
pageNumber: this.id,
@ -1020,9 +1031,6 @@ class PDFPageView {
annotationStorage,
linkService,
});
} else if (this.xfaLayer.div) {
// The xfa layer needs to stay on top.
div.append(this.xfaLayer.div);
}
this.#renderXfaLayer();
}

View File

@ -98,7 +98,6 @@ class XfaLayerBuilder {
}
// Create an xfa layer div and render the form
this.div = document.createElement("div");
this.pageDiv.append(this.div);
parameters.div = this.div;
return XfaLayer.render(parameters);