From 4a3fb3344b129280b0caff851e528d0cb2e6b8b4 Mon Sep 17 00:00:00 2001 From: Miguel Serrano Date: Mon, 7 Nov 2022 11:51:07 +0100 Subject: [PATCH] Merge pull request #10323 from overleaf/ae-pdf-dblclick-page Ensure only one dblclick listener is attached to a PDF page GitOrigin-RevId: cadaa2f3bbaba8c496a6ece698b2ba7f12f340c4 --- .../pdf-preview/components/pdf-js-viewer.js | 32 +++++++++++-------- 1 file changed, 18 insertions(+), 14 deletions(-) diff --git a/services/web/frontend/js/features/pdf-preview/components/pdf-js-viewer.js b/services/web/frontend/js/features/pdf-preview/components/pdf-js-viewer.js index 679b7f9b19..8284f6b922 100644 --- a/services/web/frontend/js/features/pdf-preview/components/pdf-js-viewer.js +++ b/services/web/frontend/js/features/pdf-preview/components/pdf-js-viewer.js @@ -192,23 +192,27 @@ function PdfJsViewer({ url, pdfFile }) { const handleTextlayerrendered = textLayer => { const pageElement = textLayer.source.textLayerDiv.closest('.page') - const doubleClickListener = event => { - const clickPosition = pdfJsWrapper.clickPosition( - event, - pageElement, - textLayer - ) + if (!pageElement.dataset.listeningForDoubleClick) { + pageElement.dataset.listeningForDoubleClick = true - if (clickPosition) { - window.dispatchEvent( - new CustomEvent('synctex:sync-to-position', { - detail: clickPosition, - }) + const doubleClickListener = event => { + const clickPosition = pdfJsWrapper.clickPosition( + event, + pageElement, + textLayer ) - } - } - pageElement.addEventListener('dblclick', doubleClickListener) + if (clickPosition) { + window.dispatchEvent( + new CustomEvent('synctex:sync-to-position', { + detail: clickPosition, + }) + ) + } + } + + pageElement.addEventListener('dblclick', doubleClickListener) + } } pdfJsWrapper.eventBus.on('textlayerrendered', handleTextlayerrendered)