Merge pull request #16824 from calixteman/editor_dont_unselect_on_render
[Editor] Avoid to unselect when a new page is rendered
This commit is contained in:
commit
0dd70c4e66
@ -129,7 +129,6 @@ class AnnotationEditorLayer {
|
|||||||
} else {
|
} else {
|
||||||
this.enableClick();
|
this.enableClick();
|
||||||
}
|
}
|
||||||
this.#uiManager.unselectAll();
|
|
||||||
|
|
||||||
if (mode !== AnnotationEditorType.NONE) {
|
if (mode !== AnnotationEditorType.NONE) {
|
||||||
this.div.classList.toggle(
|
this.div.classList.toggle(
|
||||||
|
@ -1104,6 +1104,7 @@ class AnnotationEditorUIManager {
|
|||||||
}
|
}
|
||||||
this.setEditingState(true);
|
this.setEditingState(true);
|
||||||
this.#enableAll();
|
this.#enableAll();
|
||||||
|
this.unselectAll();
|
||||||
for (const layer of this.#allLayers.values()) {
|
for (const layer of this.#allLayers.values()) {
|
||||||
layer.updateMode(mode);
|
layer.updateMode(mode);
|
||||||
}
|
}
|
||||||
|
@ -2265,4 +2265,83 @@ describe("FreeText Editor", () => {
|
|||||||
);
|
);
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
|
describe("Don't unselect all when scrolling", () => {
|
||||||
|
let pages;
|
||||||
|
|
||||||
|
beforeAll(async () => {
|
||||||
|
pages = await loadAndWait(
|
||||||
|
"tracemonkey.pdf",
|
||||||
|
".annotationEditorLayer",
|
||||||
|
100,
|
||||||
|
async page => {
|
||||||
|
await page.waitForFunction(async () => {
|
||||||
|
await window.PDFViewerApplication.initializedPromise;
|
||||||
|
return true;
|
||||||
|
});
|
||||||
|
await page.evaluate(() => {
|
||||||
|
window.PDFViewerApplication.eventBus.on(
|
||||||
|
"annotationeditorstateschanged",
|
||||||
|
({ details }) => {
|
||||||
|
window.editingEvents?.push(details);
|
||||||
|
}
|
||||||
|
);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
);
|
||||||
|
});
|
||||||
|
|
||||||
|
afterAll(async () => {
|
||||||
|
await closePages(pages);
|
||||||
|
});
|
||||||
|
|
||||||
|
it("must check that selected editor stay selected", async () => {
|
||||||
|
await Promise.all(
|
||||||
|
pages.map(async ([browserName, page]) => {
|
||||||
|
await page.click("#editorFreeText");
|
||||||
|
|
||||||
|
const rect = await page.$eval(".annotationEditorLayer", el => {
|
||||||
|
const { x, y } = el.getBoundingClientRect();
|
||||||
|
return { x, y };
|
||||||
|
});
|
||||||
|
|
||||||
|
const data = "Hello PDF.js World !!";
|
||||||
|
await page.mouse.click(rect.x + 100, rect.y + 100);
|
||||||
|
await page.waitForTimeout(10);
|
||||||
|
await page.type(`${getEditorSelector(0)} .internal`, data);
|
||||||
|
// Commit.
|
||||||
|
await page.keyboard.press("Escape");
|
||||||
|
await page.waitForTimeout(10);
|
||||||
|
|
||||||
|
await page.evaluate(() => {
|
||||||
|
window.editingEvents = [];
|
||||||
|
});
|
||||||
|
await page.waitForTimeout(10);
|
||||||
|
|
||||||
|
for (let pageNumber = 1; pageNumber <= 4; pageNumber++) {
|
||||||
|
const pageSelector = `.page[data-page-number = "${pageNumber}"]`;
|
||||||
|
await page.evaluate(selector => {
|
||||||
|
const element = window.document.querySelector(selector);
|
||||||
|
element.scrollIntoView();
|
||||||
|
}, pageSelector);
|
||||||
|
|
||||||
|
const annotationLayerSelector = `${pageSelector} > .annotationEditorLayer`;
|
||||||
|
await page.waitForSelector(annotationLayerSelector, {
|
||||||
|
visible: true,
|
||||||
|
timeout: 0,
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
const editingEvents = await page.evaluate(() => {
|
||||||
|
const e = window.editingEvents;
|
||||||
|
delete window.editingEvents;
|
||||||
|
return e;
|
||||||
|
});
|
||||||
|
expect(editingEvents.length)
|
||||||
|
.withContext(`In ${browserName}`)
|
||||||
|
.toEqual(0);
|
||||||
|
})
|
||||||
|
);
|
||||||
|
});
|
||||||
|
});
|
||||||
});
|
});
|
||||||
|
Loading…
x
Reference in New Issue
Block a user