From c06b8691e3cc33682fe2b8b614ec36ce0aada079 Mon Sep 17 00:00:00 2001 From: janekptacijarabaci Date: Tue, 13 Feb 2018 16:57:41 +0100 Subject: Places - throws an error: 0x80004005 (NS_ERROR_FAILURE) [nsIEditor.transactionManager] Steps to reproduce: 1) The main menu: "Tools" - "Options" - "Privacy" - "History": [x] "Remember my browsing and download history" 2) The main menu: "History" - "Clear Recent History...": "Today"/"Everything" - "Browsing & Download History" - "OK" 3) Go to: "https://www.palemoon.org/" 4) The main menu: "History" - "Show All History" 5) Clicking right mouse button on an item "https://www.palemoon.org" in "History", clicking on "Delete This Page". 6) Clicking on "History": Throws an error in Browser Console: NS_ERROR_FAILURE: Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsIEditor.transactionManager] editBookmarkOverlay.js:341 --- browser/base/content/browser-places.js | 33 ++++++++++++++++----------------- 1 file changed, 16 insertions(+), 17 deletions(-) (limited to 'browser/base') diff --git a/browser/base/content/browser-places.js b/browser/base/content/browser-places.js index 14e90cde2..3a9fb9d96 100644 --- a/browser/base/content/browser-places.js +++ b/browser/base/content/browser-places.js @@ -299,24 +299,23 @@ var StarUI = { parent.setAttribute("open", "true"); } } - let panel = this.panel; - let target = panel; - if (target.parentNode) { - // By targeting the panel's parent and using a capturing listener, we - // can have our listener called before others waiting for the panel to - // be shown (which probably expect the panel to be fully initialized) - target = target.parentNode; - } - target.addEventListener("popupshown", function shownListener(event) { - if (event.target == panel) { - target.removeEventListener("popupshown", shownListener, true); - - gEditItemOverlay.initPanel({ node: aNode - , hiddenRows: ["description", "location", - "loadInSidebar", "keyword"] - , focusedElement: "preferred"}); + let onPanelReady = fn => { + let target = this.panel; + if (target.parentNode) { + // By targeting the panel's parent and using a capturing listener, we + // can have our listener called before others waiting for the panel to + // be shown (which probably expect the panel to be fully initialized) + target = target.parentNode; } - }, true); + target.addEventListener("popupshown", function(event) { + fn(); + }, {"capture": true, "once": true}); + }; + gEditItemOverlay.initPanel({ node: aNode + , onPanelReady + , hiddenRows: ["description", "location", + "loadInSidebar", "keyword"] + , focusedElement: "preferred"}); this.panel.openPopup(aAnchorElement, aPosition); }), -- cgit v1.2.3