From 96216de4109a301acbe9216a9891e9af170c3f3b Mon Sep 17 00:00:00 2001 From: Calixte Denizet Date: Tue, 3 Jun 2025 20:21:21 +0200 Subject: [PATCH] Only show popups when they've some contents to display Chrome, Edge and Acrobat do that. --- src/display/annotation_layer.js | 4 ++-- test/integration/annotation_spec.mjs | 2 +- test/integration/freetext_editor_spec.mjs | 21 +-------------------- test/integration/test_utils.mjs | 6 ------ test/pdfs/rotated_ink.pdf | Bin 17873 -> 22682 bytes test/pdfs/tagged_stamp.pdf | Bin 21629 -> 18885 bytes 6 files changed, 4 insertions(+), 29 deletions(-) diff --git a/src/display/annotation_layer.js b/src/display/annotation_layer.js index 5ecac4947..185074794 100644 --- a/src/display/annotation_layer.js +++ b/src/display/annotation_layer.js @@ -185,8 +185,8 @@ class AnnotationElement { } } - static _hasPopupData({ titleObj, contentsObj, richText }) { - return !!(titleObj?.str || contentsObj?.str || richText?.str); + static _hasPopupData({ contentsObj, richText }) { + return !!(contentsObj?.str || richText?.str); } get _isEditable() { diff --git a/test/integration/annotation_spec.mjs b/test/integration/annotation_spec.mjs index 3193a91de..7db5284d2 100644 --- a/test/integration/annotation_spec.mjs +++ b/test/integration/annotation_spec.mjs @@ -664,7 +664,7 @@ describe("ResetForm action", () => { }); describe("Rotated annotation and its clickable area", () => { - describe("issue14438.pdf", () => { + describe("rotated_ink.pdf", () => { let pages; beforeEach(async () => { diff --git a/test/integration/freetext_editor_spec.mjs b/test/integration/freetext_editor_spec.mjs index 342fc41d3..fd58378ee 100644 --- a/test/integration/freetext_editor_spec.mjs +++ b/test/integration/freetext_editor_spec.mjs @@ -27,7 +27,6 @@ import { getFirstSerialized, getRect, getSerialized, - hover, isCanvasMonochrome, kbBigMoveDown, kbBigMoveLeft, @@ -1166,16 +1165,6 @@ describe("FreeText Editor", () => { await Promise.all( pages.map(async ([browserName, page]) => { await page.waitForSelector("[data-annotation-id='23R']"); - // Cannot use page.hover with Firefox on Mac because of a bug. - // TODO: remove this when we switch to BiDi. - await hover(page, "[data-annotation-id='23R']"); - - // Wait for the popup to be displayed. - await page.waitForFunction( - () => - document.querySelector("[data-annotation-id='popup_23R']") - .hidden === false - ); // Enter in editing mode. await switchToFreeText(page); @@ -1183,15 +1172,7 @@ describe("FreeText Editor", () => { // Disable editing mode. await switchToFreeText(page, /* disable = */ true); - // TODO: remove this when we switch to BiDi. - await hover(page, "[data-annotation-id='23R']"); - - // Wait for the popup to be displayed. - await page.waitForFunction( - () => - document.querySelector("[data-annotation-id='popup_23R']") - .hidden === false - ); + await page.waitForSelector("[data-annotation-id='23R']"); }) ); }); diff --git a/test/integration/test_utils.mjs b/test/integration/test_utils.mjs index e6752aff1..f3d949e6a 100644 --- a/test/integration/test_utils.mjs +++ b/test/integration/test_utils.mjs @@ -623,11 +623,6 @@ async function firstPageOnTop(page) { return awaitPromise(handle); } -async function hover(page, selector) { - const rect = await getRect(page, selector); - await page.mouse.move(rect.x + rect.width / 2, rect.y + rect.height / 2); -} - async function setCaretAt(page, pageNumber, text, position) { await page.evaluate( (pageN, string, pos) => { @@ -912,7 +907,6 @@ export { getSerialized, getSpanRectFromText, getXY, - hover, isCanvasMonochrome, kbBigMoveDown, kbBigMoveLeft, diff --git a/test/pdfs/rotated_ink.pdf b/test/pdfs/rotated_ink.pdf index 8b69361eaf3f65bf506926b879a4eaff3e61bf1f..0b7a9989855b611d36519beeb9f6bab247ab3962 100644 GIT binary patch delta 1461 zcmZuxc~H^`6c&#}64cV|&@H_13V|Popr)bXnmXB74CO%{{IFcXG}3g}CAGCOMU7U| zYLzlA4@A7v8IP!)>dva<2BY59D$y#e_?U9N|I#Vt+A9y8cV0jLwu?4Gbm|sT~5yuvV+D2 zo9f0obSkXeA;+idyQ{}$Kqn(G#1+|{h>WuwmZ^8&f!ALog&x^G2}3d{(wrS*%7 zOO*%2%K9AlmWAgO=&U>*_C8={;08V4!em~pjRHUx@B8q zW8r9*^Pq^8T_)S< z%_<%`V4QqLX5Qc0?X(p&58r#-sE=Xy`qJW1$)l*}Vts#+7;hWPiEH4mEPPDV3G8{-T= zgfXP@WhMq=UFwl|fGy+9D)Vc%a3h`$R7uCS>s$)9?pK~anFhAxxqc#^Ax_#$;$=!n)#=_B99s<>yC%8r{C|-`|h5< zv5Jo;dKdHI)N#6W;ORMp^0jyhVW-l}A!0X1H)v|)1m%&RX9u{as`k^~mh0&0h(AM} z{}X9#q5)yB9}Y)uAJkT^F28Nh@lCi0Lt;OoM+ zJ?S8lfX8f4+Y4fLgo11gBU~$K#Yiu&Z+{TBdpIVB*QV%}d7M6)nOQW+H!Wm)_I7u4 h!c3!dHU;R*;4tCcRhA|&0KgN8aG1S4EyN!V`x__ukG=o^ delta 9 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 K2m$b4jDG`e|1IGF