From 78f612ffef0dd45dfbc69be798d5de9216b9b061 Mon Sep 17 00:00:00 2001 From: avdoseferovic Date: Fri, 17 Jan 2025 13:45:22 +0100 Subject: [PATCH] fix: don't scroll when drawing [#17327] --- src/display/editor/annotation_editor_layer.js | 4 +- test/integration/ink_editor_spec.mjs | 50 +++++++++++++++++++ 2 files changed, 53 insertions(+), 1 deletion(-) diff --git a/src/display/editor/annotation_editor_layer.js b/src/display/editor/annotation_editor_layer.js index 7d718f7e5..321f754a7 100644 --- a/src/display/editor/annotation_editor_layer.js +++ b/src/display/editor/annotation_editor_layer.js @@ -805,7 +805,9 @@ class AnnotationEditorLayer { } startDrawingSession(event) { - this.div.focus(); + this.div.focus({ + preventScroll: true, + }); if (this.#drawingAC) { this.#currentEditorType.startDrawing(this, this.#uiManager, false, event); return; diff --git a/test/integration/ink_editor_spec.mjs b/test/integration/ink_editor_spec.mjs index 672f8ae21..b60e2c326 100644 --- a/test/integration/ink_editor_spec.mjs +++ b/test/integration/ink_editor_spec.mjs @@ -1084,4 +1084,54 @@ describe("Ink Editor", () => { ); }); }); + + describe("Page position should remain unchanged after drawing", () => { + let pages; + + beforeAll(async () => { + pages = await loadAndWait("tracemonkey.pdf", ".annotationEditorLayer"); + }); + + afterAll(async () => { + await closePages(pages); + }); + + it("must check that the page position remains the same after drawing", async () => { + await Promise.all( + pages.map(async ([browserName, page]) => { + const pageInitialPosition = await getRect( + page, + ".page[data-page-number='1']" + ); + + await switchToInk(page); + + const editorLayerRect = await getRect(page, ".annotationEditorLayer"); + const drawStartX = editorLayerRect.x + 100; + const drawStartY = editorLayerRect.y + 100; + + const clickHandle = await waitForPointerUp(page); + await page.mouse.move(drawStartX, drawStartY); + await page.mouse.down(); + await page.mouse.move(drawStartX + 50, drawStartY + 50); + await page.mouse.up(); + await awaitPromise(clickHandle); + await commit(page); + + const pageFinalPosition = await getRect( + page, + ".page[data-page-number='1']" + ); + + expect(pageInitialPosition.x) + .withContext(`In ${browserName}`) + .toEqual(pageFinalPosition.x); + + expect(pageInitialPosition.y) + .withContext(`In ${browserName}`) + .toEqual(pageFinalPosition.y); + }) + ); + }); + }); });