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 f6ea592
Show file tree
Hide file tree
Showing 3 changed files with 47 additions and 3 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
17 changes: 15 additions & 2 deletions web/pdf_page_view.js
Original file line number Diff line number Diff line change
Expand Up @@ -104,7 +104,13 @@ const LAYERS_ORDER = new Map([
["textLayer", 1],
["annotationLayer", 2],
["annotationEditorLayer", 3],
["xfaLayer", 2],
["xfaLayer", 3],
]);

const XFA_LAYERS_ORDER = new Map([
["canvasWrapper", 0],
["xfaLayer", 1],
["annotationLayer", 2],
]);

/**
Expand Down Expand Up @@ -234,8 +240,15 @@ class PDFPageView {
}

#addLayer(div, name) {
const pos = LAYERS_ORDER.get(name);
const pos = (this.pdfPage.isPureXfa ? XFA_LAYERS_ORDER : 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 f6ea592

Please sign in to comment.