From ee5b8bcf9ec65b24c3a059bd0437397800e2a11b Mon Sep 17 00:00:00 2001 From: Jonas Jenwald Date: Fri, 22 Sep 2023 12:26:03 +0200 Subject: [PATCH] [Editor] Make the altText dialog labels part of telemetry (PR 16987 follow-up) Radio-buttons can also be toggled by clicking on their associated `label`-elements, and not only the `input`-elements itself, however it seems that "pointerdown" event listeners don't cover that case. Hence it's possible that telemetry could miss certain cases of a mouse being used, and the easiest solution seem to be to instead use "click" event listeners and just ignore keyboard-based events. --- web/alt_text_manager.js | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) diff --git a/web/alt_text_manager.js b/web/alt_text_manager.js index 2006e82f6..11fb7cf57 100644 --- a/web/alt_text_manager.js +++ b/web/alt_text_manager.js @@ -20,7 +20,7 @@ class AltTextManager { #boundSetPosition = this.#setPosition.bind(this); - #boundPointerDown = this.#pointerDown.bind(this); + #boundOnClick = this.#onClick.bind(this); #currentEditor = null; @@ -133,7 +133,7 @@ class AltTextManager { this.#hasUsedPointer = false; for (const element of this._elements) { - element.addEventListener("pointerdown", this.#boundPointerDown); + element.addEventListener("click", this.#boundOnClick); } const { altText, decorative } = editor.altTextData; @@ -243,7 +243,7 @@ class AltTextManager { } #close() { - this.#removePointerDownListeners(); + this.#removeOnClickListeners(); this.#uiManager?.addEditListeners(); this.#eventBus._off("resize", this.#boundSetPosition); this.#currentEditor = null; @@ -283,14 +283,17 @@ class AltTextManager { this.#finish(); } - #pointerDown() { + #onClick(evt) { + if (evt.detail === 0) { + return; // The keyboard was used. + } this.#hasUsedPointer = true; - this.#removePointerDownListeners(); + this.#removeOnClickListeners(); } - #removePointerDownListeners() { + #removeOnClickListeners() { for (const element of this._elements) { - element.removeEventListener("pointerdown", this.#boundPointerDown); + element.removeEventListener("click", this.#boundOnClick); } }