diff --git a/chrome/content/zotero/elements/attachmentBox.js b/chrome/content/zotero/elements/attachmentBox.js index 3d9a6f6363..ea50e72a5f 100644 --- a/chrome/content/zotero/elements/attachmentBox.js +++ b/chrome/content/zotero/elements/attachmentBox.js @@ -264,7 +264,11 @@ } }); - this.querySelectorAll(".meta-label").forEach(label => label.addEventListener("click", this._handleMetaLabelClick)); + for (let label of this.querySelectorAll(".meta-label")) { + // Prevent default focus/blur behavior - we implement our own below + label.addEventListener("mousedown", event => event.preventDefault()); + label.addEventListener("click", this._handleMetaLabelClick); + } } destroy() { @@ -625,6 +629,8 @@ } _handleMetaLabelClick = (event) => { + event.preventDefault(); + let labelWrapper = event.target.closest(".meta-label"); if (labelWrapper.nextSibling.contains(document.activeElement)) { document.activeElement.blur(); diff --git a/chrome/content/zotero/elements/itemBox.js b/chrome/content/zotero/elements/itemBox.js index 8e71561f98..31d49a069b 100644 --- a/chrome/content/zotero/elements/itemBox.js +++ b/chrome/content/zotero/elements/itemBox.js @@ -854,7 +854,15 @@ if (!this.editable) { break; } - label.addEventListener('click', (_) => { + + label.addEventListener('mousedown', (event) => { + // Prevent default focus/blur behavior - we implement our own below + event.preventDefault(); + }); + + label.addEventListener('click', (event) => { + event.preventDefault(); + let labelWrapper = label.closest(".meta-label"); if (labelWrapper.nextSibling.contains(document.activeElement)) { document.activeElement.blur();