From 276c8f35182af2829c5e07278bf2b4120613b351 Mon Sep 17 00:00:00 2001 From: Calixte Denizet Date: Wed, 19 Mar 2025 14:26:31 +0100 Subject: [PATCH] [Editor] Take into account the parent rotation when switch to edit mode (issue #19424) --- src/display/editor/highlight.js | 1 + test/integration/highlight_editor_spec.mjs | 30 +++++++++++++++++++++ test/pdfs/.gitignore | 1 + test/pdfs/issue19424.pdf | Bin 0 -> 9092 bytes 4 files changed, 32 insertions(+) create mode 100755 test/pdfs/issue19424.pdf diff --git a/src/display/editor/highlight.js b/src/display/editor/highlight.js index 0706ba867..86626a62c 100644 --- a/src/display/editor/highlight.js +++ b/src/display/editor/highlight.js @@ -984,6 +984,7 @@ class HighlightEditor extends AnnotationEditor { clipPathId, }); editor.#addToDrawLayer(); + editor.rotate(editor.parentRotation); } return editor; diff --git a/test/integration/highlight_editor_spec.mjs b/test/integration/highlight_editor_spec.mjs index f9d4199c2..e99db2c81 100644 --- a/test/integration/highlight_editor_spec.mjs +++ b/test/integration/highlight_editor_spec.mjs @@ -2674,4 +2674,34 @@ describe("Highlight Editor", () => { ); }); }); + + describe("Highlight must be rotated when existing in the pdf", () => { + let pages; + + beforeAll(async () => { + pages = await loadAndWait("issue19424.pdf", ".annotationEditorLayer"); + }); + + afterAll(async () => { + await closePages(pages); + }); + + it("must check that there is no scroll because of focus", async () => { + await Promise.all( + pages.map(async ([browserName, page]) => { + await page.evaluate(() => { + window.PDFViewerApplication.rotatePages(90); + }); + await page.waitForSelector( + ".annotationEditorLayer[data-main-rotation='90']" + ); + await switchToHighlight(page); + + await page.waitForSelector( + ".canvasWrapper svg[data-main-rotation='90']" + ); + }) + ); + }); + }); }); diff --git a/test/pdfs/.gitignore b/test/pdfs/.gitignore index ce4ad6084..8714e1756 100644 --- a/test/pdfs/.gitignore +++ b/test/pdfs/.gitignore @@ -713,3 +713,4 @@ !colors.pdf !red_stamp.pdf !issue19633.pdf +!issue19424.pdf diff --git a/test/pdfs/issue19424.pdf b/test/pdfs/issue19424.pdf new file mode 100755 index 0000000000000000000000000000000000000000..4a6257422e3c08c71804c243cd97e034b66392d9 GIT binary patch literal 9092 zcmeHNcT`kI+Xn%o2m&Ss4VIf#LXqXRy?1w!UIjrBh^ScD2CT9r%OXXMC|yLcVkL@7 z?4TkxP$T*(NR<+eC@QFk5xYPT{N~=mWp@^ajZxPp|Cf^;$jFq6GCy=4Puilcm`+< zfLJ8ThNnS65DP~^AG*NaUSA{?QYN55U%&^e--oM6AQOswc?wAc@aQ57kCaFwARP8p zh=gK+Ql@}V%-$Y$7l$iF3fMiIrxdA%z@Dx_wk!m}3EZ9Q6Y9jpT%6pU zon3GO;o94}lQ_=hx}%7TGuMsFLOE>A4dXhwx?s)-;_iglFMvIzLQ!-ONSvU)hsYol z0rC04-XdwJG7Q2IDww5Iq8!*yCR2il=zf2I41|(!K#W`j&+!w5z=1(11o{935lV%K zC(+jpyU*tf4TJf?etdrLD;~e2Jw0_*^*7LE4I^Yop}sCaO0BBKEJDdsD5Djk5Pe-l zU)R*sZKk`vZZD1iI-(!C!7zc??B2LpY%p0Q3j0Gi`B^~0!NJzPwQIolAeGL2?1A;j+;F3PJJybX*iNxw9-f2(bq6gFh0*z&o1@-WR|=pc;7p zwilF-NUBtO@)JeKA{7D=s3%Z3eljH}83<9$5*5(^@BPjP!O~rctbqIH2Tl zm7$sZ#r{gkKv*$<#1{!fP6Xun=CNkyov4ngfXk=MLTaOKT3K3adW|*Le%3Yl%Jy%! z=p6c^=YT19d(5G0OP4z8uX8*GZI8Q}9k6Exo^rBmJ-ZX1@#Y$(xrM z<|4>j?kfE127mgb#KK#lPq0L!g!rORvDA+7^1>wsBo^8+0tp|)NA4mD6Hkj(i2P$` z1PEf62)IIqgT1b8v`w@`E&&w*MN7h^5jN3w3?A4AL^j|%)eJKrT1C0Uj^RXgKy!S2 zAs3lK1aYlVrT{@uFx}P|4-s;NTq_7eFdRm37-cb0)CT3+u*lwpz_6#*gsnmtV&muP zuJ#8cJ4TpNDYt>)sHiCGDBN162!&BDmkT2pjA2Zm!HkHJDtXaNX~ZOzkzPBlq6mRP zELVzUQi!t4b*9J#zSojnKvq2DB_)nVs0MRyFz{Usm=s|5@+<`U*X#UAYZ%Gbr zgPj+YzGDUz)7H+SqI46NZ#^)&^Uxf@ZCs|CsSZM)axHW2xAt;-rN^an= z0TzVi9PW~3S|G@PRTz?CJzoq<7b^Qa^-$LMTDgRSl z|7URN_Fp!@4cLwm1+EfYDS{i`vNm#CO2;ti8h9VjamE zsyp;rYjVKX`&+-5ob&V7ckfU);0MHr+(CjFKwtdZV2J)}Bl@4B!C1bkaIC$2tV+r% zBRs7<>*OaeaQ-F{oQ3DHNY=?(67gdrzP~0MEQN2$y-Q|#eJ}U6E}iLRHEWo8X<$k< zf>-;LTBTM8AXq(Ki(?3jU0vH=KJyoTb}HK7y667pTg?HF((_Mg4MQ{xOOQo_WHo?U z7@U-0{r{3Oe<5O6gV8U5g8CEvLNQPS=@*S5-?`^F=y~g{ZI9D_IoI%rvFm&-ufnd8 zLKH!+49i*RxO#&oAY>|seKCFzSOyR>C`$HGGQG@&uB|NutEmeph$4;vZ$YsZ3!pyI z;?L~^=?Vz$<0~MFumG}}v4H5zAeiDTAlOMNl_?{jAe5$7K#CM~1g`hGbOZH;3WUN! ztqb+u^dUfMEumrr_cCx{q3%hLxvLE*Fap6*E}-lX7G^=kAy7g=pxGK@Lo9@VaDr`( zkPu0-t#J-W2bl2|14<+)2*ZIA0hHL(2ZnKI30$LSiLhpaKAdjEFpQQ6m4tF=iH%bq z7)lRkaZr^+YZ8Flp$OGTuvAtMKoS6nWYOc)5{Elb;?gRZs*eP5QvTEu zI&d6`Ap`rc&ops$A00J`6Le&VTB1KNwZu|I-7Bdz>5xd43MG&`h?*o+HdUrcLZ!)~ zF(Uy=RGb7!YmzEWk~U3};ED?R*mPr`^qD3AlJ=lNi9=GxNR=@hQH@g}h^vtRQ3DlR z9T`sNj;kOiRa1=PDi0X_fwO4nD9nH(TxED2YvD1`3%{A=osKI6|usY!zl)l_se| zS7nR<5*UDS=tct6I4#kI*(#y*KorB@>9R0!|^g1`tmcY>t7V+5TTRiBhi6%qug zs(F?=78-esrS_+)9u^%gp_*_^H648t4M?A)S{-Ul)r|G_Ve}mJNuOz|QBsdn&AUo- z0a)Pf5NqJ};~7A&`DxY0;(j5b@LKNxzpDC7&A}Q)W`Uyz;2giO`OYw+3&C zru3Alnfj;LMeh46qmu9JHhGt07k=!?5u?$kK4=_cXSaEWM}(~7EZgB7aop}vN1^xg zx7SiGY^yBGxt?++M{?(Q48M6^O+{XJNYRGpWnBs3>l-SDfBIPbVfS_SwyDR4rp!t^ z*ZHQ*X3~oCDK&W1+IRS*q!+jHAC5C_1_klO6|!??hpqyo$=u z5fz==>kmdg>HH#gPi4OQi|)$m7jN%09_;8$ezCh`{Nwy_qO_kbRXurnO6TsPePrqK z5Lwi(<~Pr+^tik4=#NhqE;s*a^dlELJO^zwdA!7?W@x2fM|k|0y0(woe=~27xh?U& zm=?ngDO=_dQ*n1^dQ7D`oTxGEZtGUgx#F=!c-I=mW{3IXbBE`|ynUCiIJTxv z_9>+K;O$fLnBr>7UGYlC$pweDb7bjjc7&SGUlGu7ZgfbvXuYn^>T6lQdOUt)_4WDE z2EFdirSEQp}`h3)8Hn%Tlalaef@aDk)d;R zR%u^hS`HWcKD*W`cX2eC-54mlJ@@RzC!6oxDKvTRFmdUw3>}gF)L7dO_j2lT$TX(~ z?9dPF-~YvGdwt!ry>;6UXKk0|bfs+WD*RCVD(332mo0~iZ*R;^WWS2-OoENyr1^u8 z;7;8cd~`W%m-=+=)a6rWt$SMX<#_2Y_sFak!!Zj_CKW5AdtNMyOzV8rz1pi`o&BlH z_gB337}EM`VO!C#=8mKbDF;3@`Q0NlSGE3jwB5Vw-NE^pc@?Ew?#XHT9KhoHL z_C@pZAC>aA$$@$obPw3tqgz}x$0c^e6lobx%#tyFW&Hf)$+mUF3l!SO+;=yEoHB~% z`tl~k>jWQ9I}`WqxtFBR1t!-b?AfTrQ`Q&rGM>f{ar!o|Q@-*X_x*$if%G;ggtwawqy_0v-;KKT{Kk{}@lrCE~Dj|5}l*o~MUZWMGRuR-=T9$Lb zJ+Vqt^V8}-Mt)h%XgPm6(Rs_sX7^*W%y^j}4BaPNB_iA(&&0LF%vhG3&l-b%mF;Ud z&n4AykB`4WrpLnxi4)_*UYmA9;QBsNILLb{6?8z zUKF};;g>-r-g*1PhhIM5cqQf7b=%DN;I0K%YI?jnzj6()%erv=(a-W>YnHz`|EAI0 z@8rqdZfL!($HKD@#!M>JuBr)LvcXU8>`)PZP?5)ze|P*|>Eq2|1%{`#wNAVIP5l<5 zIO7XBrjtMJDK+FWO80mzv>efx%-`Ge$1NRgJ^!sGqO7-Cj{=0KVdwGF8Dm`U+_|5) z!7=YllD)AQQm1Jm-#dsa)bD;Wt#Pw#5=lFAgPSq5fDH|(u1EFJwgx9Tk?Tu;ZO;r_FEGjt~8)ajCYiS^djUEgk4kW7r! zuF>5Xo4GYnIR-QIy!JNBb9-pxc;$>ew>B-l@0V%Ka9z4LEl8t@DEaBqkn)wL+db`H z{H&|pQ?o)cI&JevgV0*V=F!)a{C$o*kxO{93T9Nhf5MUu5wY+S9sA1jvIhLchwr6>1k0?2zyW^_@yKbKG`?0lJ0r95Kt~8B$pKm7o9oS{zILth>)zMFOijz(bZz{h^vR7kyF_N2ZcKS&v?8(VNZ6&3 z8mINTZY3Hy$2z$-+3fc`Eb|UzEcziqs&P3iFw%A^l(2wsn74TBlBQthw9A&G#3{_K z$g$=@PHR0EbxSO*ja%-!{djPy$?>TgQFpa+HI0Ppe`@?uudZ(A0@u1TTHjY)-NuHl z){YR@ylp_dT&(!=lF z!_|^02hRWa)V(HWQ(oY!*(}4rMbZ&Zk!Pt}4qFv&8=ufzuxPr}!X(Etc~ympr&h%2 zs@sQGBDUsnll>p0MqM;|sZf68K09c6@|CRVMAJB(()#ajt^FRZ-k#(xiQEZSg*jcT z8P7>G5?%T_^OBMI#kT8*cId4!`exq_M)v+M&U}MAg()ionTO*JZD=t0v_AKFXp(W# zq2aa1nqL{sFE{zr({$}tKONC`e&h@|KhjTSfIB%jJT@Uch)VBCQS(cV=9j-{j*)6Ij{h}*J~ly@ M!(nq&&v)ql4^24nUH||9 literal 0 HcmV?d00001