From 60d8beece34a59d06d2786a3006e8bc3e45ca648 Mon Sep 17 00:00:00 2001 From: Fletcher Hazlehurst Date: Mon, 22 Feb 2021 20:14:07 -0700 Subject: [PATCH] Add context menu for React textboxes to Create Parent Dialog --- chrome/content/zotero/createParentDialog.js | 24 ++++++++++++ chrome/content/zotero/createParentDialog.xul | 41 +++++++++++++++++++- 2 files changed, 64 insertions(+), 1 deletion(-) diff --git a/chrome/content/zotero/createParentDialog.js b/chrome/content/zotero/createParentDialog.js index 2253f7da05..5e6f11074e 100644 --- a/chrome/content/zotero/createParentDialog.js +++ b/chrome/content/zotero/createParentDialog.js @@ -78,3 +78,27 @@ function doManualEntry() { io.dataOut = { parent: false }; window.close(); } + +// Support context menus on HTML text boxes +// +// Adapted from editMenuOverlay.js in Fx68 +window.addEventListener("contextmenu", e => { + const HTML_NS = "http://www.w3.org/1999/xhtml"; + let needsContextMenu = + e.target.ownerDocument == document && + !e.defaultPrevented && + e.target.parentNode.nodeName != "moz-input-box" && + ((["textarea", "input"].includes(e.target.localName) && + e.target.namespaceURI == HTML_NS) || + e.target.closest("search-textbox")); + + if (!needsContextMenu) { + return; + } + + let popup = document.getElementById("contentAreaContextMenu"); + popup.openPopupAtScreen(e.screenX, e.screenY, true); + // Don't show any other context menu at the same time. There can be a + // context menu from an ancestor too but we only want to show this one. + e.preventDefault(); +}); diff --git a/chrome/content/zotero/createParentDialog.xul b/chrome/content/zotero/createParentDialog.xul index e92707d6cf..f518ddf3b5 100644 --- a/chrome/content/zotero/createParentDialog.xul +++ b/chrome/content/zotero/createParentDialog.xul @@ -5,7 +5,12 @@ - + + + %textcontextDTD; + %zoteroDTD; +]> +