From bd3f14f62dbbeae7f9b464411dc6d17cc2d429b2 Mon Sep 17 00:00:00 2001 From: Calixte Denizet Date: Fri, 20 Feb 2026 18:06:48 +0100 Subject: [PATCH] Update the page count in the UI when some changes are done (bug 2018125) --- test/integration/reorganize_pages_spec.mjs | 34 ++++++++++++++++++++++ web/toolbar.js | 6 ++++ 2 files changed, 40 insertions(+) diff --git a/test/integration/reorganize_pages_spec.mjs b/test/integration/reorganize_pages_spec.mjs index cfcf83718..3b4be61ff 100644 --- a/test/integration/reorganize_pages_spec.mjs +++ b/test/integration/reorganize_pages_spec.mjs @@ -686,6 +686,40 @@ describe("Reorganize Pages View", () => { }) ); }); + + it("should update the page count in the toolbar after deletion (bug 2018125)", async () => { + await Promise.all( + pages.map(async ([browserName, page]) => { + await waitForThumbnailVisible(page, 1); + await page.waitForSelector("#viewsManagerStatusActionButton", { + visible: true, + }); + + const initialCount = await page.$eval("#pageNumber", el => el.max); + expect(parseInt(initialCount, 10)) + .withContext(`In ${browserName}`) + .toBe(17); + + await waitAndClick( + page, + `.thumbnail:has(${getThumbnailSelector(1)}) input` + ); + await waitAndClick( + page, + `.thumbnail:has(${getThumbnailSelector(3)}) input` + ); + + const handlePagesEdited = await waitForPagesEdited(page); + await waitAndClick(page, "#viewsManagerStatusActionButton"); + await waitAndClick(page, "#viewsManagerStatusActionDelete"); + await awaitPromise(handlePagesEdited); + + await page.waitForFunction( + () => document.querySelector("#pageNumber").max === "15" + ); + }) + ); + }); }); describe("Cut and paste some pages", () => { diff --git a/web/toolbar.js b/web/toolbar.js index 95639af9a..382ad189b 100644 --- a/web/toolbar.js +++ b/web/toolbar.js @@ -237,6 +237,12 @@ class Toolbar { value: this.value, }); }); + eventBus._on("pagesedited", ({ pagesMapper }) => { + const pagesCount = pagesMapper.pagesNumber; + if (pagesCount !== this.pagesCount) { + this.setPagesCount(pagesCount, this.hasPageLabels); + } + }); scaleSelect.addEventListener("change", function () { if (this.value === "custom") {