From 5e126032ffd4596579b947005ccb5230effe7651 Mon Sep 17 00:00:00 2001 From: Jonas Jenwald Date: Wed, 17 Aug 2022 15:44:27 +0200 Subject: [PATCH] Correctly mimic the proper event-format in `AnnotationElement._setDefaultPropertiesFromJS` (bug 1785218) *This is a follow-up to PR 14869.* In the old code we're accidentally "swallowing" part of the event-details, which explains why the annotationLayer didn't render. One thing that made debugging a lot harder was the lack of error messages, from the viewer, and a few `PDFPageView`-methods were updated to improve this situation. --- src/display/annotation_layer.js | 8 +++++++- web/pdf_page_view.js | 13 +++++++------ 2 files changed, 14 insertions(+), 7 deletions(-) diff --git a/src/display/annotation_layer.js b/src/display/annotation_layer.js index 1e272ac89..06d68fd09 100644 --- a/src/display/annotation_layer.js +++ b/src/display/annotation_layer.js @@ -401,7 +401,13 @@ class AnnotationElement { for (const [actionName, detail] of Object.entries(storedData)) { const action = commonActions[actionName]; if (action) { - action({ detail, target: element }); + const eventProxy = { + detail: { + [actionName]: detail, + }, + target: element, + }; + action(eventProxy); // The action has been consumed: no need to keep it. delete storedData[actionName]; } diff --git a/web/pdf_page_view.js b/web/pdf_page_view.js index 8ed540718..2b3b2c976 100644 --- a/web/pdf_page_view.js +++ b/web/pdf_page_view.js @@ -235,6 +235,7 @@ class PDFPageView { try { await this.annotationLayer.render(this.viewport, "display"); } catch (ex) { + console.error(`_renderAnnotationLayer: "${ex}".`); error = ex; } finally { this.eventBus.dispatch("annotationlayerrendered", { @@ -253,6 +254,7 @@ class PDFPageView { try { await this.annotationEditorLayer.render(this.viewport, "display"); } catch (ex) { + console.error(`_renderAnnotationEditorLayer: "${ex}".`); error = ex; } finally { this.eventBus.dispatch("annotationeditorlayerrendered", { @@ -274,6 +276,7 @@ class PDFPageView { this._buildXfaTextContentItems(result.textDivs); } } catch (ex) { + console.error(`_renderXfaLayer: "${ex}".`); error = ex; } finally { this.eventBus.dispatch("xfalayerrendered", { @@ -843,12 +846,10 @@ class PDFPageView { ); if (this.xfaLayerFactory) { - if (!this.xfaLayer) { - this.xfaLayer = this.xfaLayerFactory.createXfaLayerBuilder({ - pageDiv: div, - pdfPage, - }); - } + this.xfaLayer ||= this.xfaLayerFactory.createXfaLayerBuilder({ + pageDiv: div, + pdfPage, + }); this._renderXfaLayer(); }