Skip to content

Commit

Permalink
Avoid wrong scrolling when calling zoomReset
Browse files Browse the repository at this point in the history
  • Loading branch information
calixteman committed Mar 21, 2024
1 parent ae60221 commit 918b500
Show file tree
Hide file tree
Showing 3 changed files with 38 additions and 2 deletions.
32 changes: 32 additions & 0 deletions test/integration/viewer_spec.mjs
Original file line number Diff line number Diff line change
Expand Up @@ -55,4 +55,36 @@ describe("PDF viewer", () => {
);
});
});

describe("Zoom commands", () => {
let pages;

beforeAll(async () => {
pages = await loadAndWait("tracemonkey.pdf", ".textLayer .endOfContent");
});

afterAll(async () => {
await closePages(pages);
});

it("must check that zoom commands don't scroll the document", async () => {
await Promise.all(
pages.map(async ([browserName, page]) => {
for (let i = 0; i < 10; i++) {
await page.evaluate(() => window.PDFViewerApplication.zoomIn());
await page.evaluate(() => window.PDFViewerApplication.zoomReset());
await page.waitForSelector(
`.page[data-page-number="1"] .textLayer .endOfContent`
);
const scrollTop = await page.evaluate(
() => document.getElementById("viewerContainer").scrollTop
);
expect(scrollTop < 100)
.withContext(`In ${browserName}`)
.toBe(true);
}
})
);
});
});
});
1 change: 0 additions & 1 deletion web/annotation_editor_layer_builder.js
Original file line number Diff line number Diff line change
Expand Up @@ -127,7 +127,6 @@ class AnnotationEditorLayerBuilder {
return;
}
this.annotationEditorLayer.destroy();
this.div.remove();
}

hide() {
Expand Down
7 changes: 6 additions & 1 deletion web/pdf_page_view.js
Original file line number Diff line number Diff line change
Expand Up @@ -104,7 +104,7 @@ const LAYERS_ORDER = new Map([
["textLayer", 1],
["annotationLayer", 2],
["annotationEditorLayer", 3],
["xfaLayer", 2],
["xfaLayer", 3],
]);

/**
Expand Down Expand Up @@ -235,7 +235,12 @@ class PDFPageView {

#addLayer(div, name) {
const pos = LAYERS_ORDER.get(name);
const oldDiv = this.#layers[pos];
this.#layers[pos] = div;
if (oldDiv) {
oldDiv.replaceWith(div);
return;
}
for (let i = pos - 1; i >= 0; i--) {
const layer = this.#layers[i];
if (layer) {
Expand Down

0 comments on commit 918b500

Please sign in to comment.