[Editor] A pasted FreeText editor was missing when printing/saving

When a FreeText editor is pasted then it hasn't an editorDiv yet when added
to the layer, hence it's empty.
So this patch just move the call to addToAnnotationStorage to ensure we've
what we need.
This commit is contained in:
Calixte Denizet 2022-08-04 12:44:05 +02:00
parent b985eaa98c
commit 3c8d8f0d02
2 changed files with 22 additions and 1 deletions

View File

@ -426,7 +426,6 @@ class AnnotationEditorLayer {
*/
add(editor) {
this.#changeParent(editor);
this.addToAnnotationStorage(editor);
this.#uiManager.addEditor(editor);
this.attach(editor);
@ -438,6 +437,7 @@ class AnnotationEditorLayer {
this.moveDivInDOM(editor);
editor.onceAdded();
this.addToAnnotationStorage(editor);
}
/**

View File

@ -32,6 +32,11 @@ describe("Editor", () => {
await closePages(pages);
});
const countStorageEntries = async page =>
page.evaluate(
() => window.PDFViewerApplication.pdfDocument.annotationStorage.size
);
it("must write a string in a FreeText editor", async () => {
await Promise.all(
pages.map(async ([browserName, page]) => {
@ -64,6 +69,10 @@ describe("Editor", () => {
editorRect.y + 2 * editorRect.height
);
expect(await countStorageEntries(page))
.withContext(`In ${browserName}`)
.toEqual(1);
const content = await page.$eval(`${editorPrefix}0`, el =>
el.innerText.trimEnd()
);
@ -94,6 +103,10 @@ describe("Editor", () => {
await page.keyboard.press("v");
await page.keyboard.up("Control");
expect(await countStorageEntries(page))
.withContext(`In ${browserName}`)
.toEqual(2);
const content = await page.$eval(`${editorPrefix}0`, el =>
el.innerText.trimEnd()
);
@ -114,6 +127,10 @@ describe("Editor", () => {
await page.keyboard.press("v");
await page.keyboard.up("Control");
expect(await countStorageEntries(page))
.withContext(`In ${browserName}`)
.toEqual(3);
pastedContent = await page.$eval(`${editorPrefix}2`, el =>
el.innerText.trimEnd()
);
@ -142,6 +159,10 @@ describe("Editor", () => {
expect(hasEditor).withContext(`In ${browserName}`).toEqual(false);
}
expect(await countStorageEntries(page))
.withContext(`In ${browserName}`)
.toEqual(0);
})
);
});