[DEVTOOLS] Resolve issues with dynamically created devtools menu items vs hardcoded vs overlay

Follow up to 1a36001
This commit is contained in:
NTD 2018-04-08 19:48:21 -04:00 committed by Roy Tam
commit f0d4b2476b
3 changed files with 28 additions and 22 deletions

View file

@ -144,10 +144,10 @@
observes="workOfflineMenuitemState"
oncommand="BrowserOffline.toggleOfflineStatus();"/>
<menuseparator/>
<menuitem id="appmenu_javascriptConsole"
observes="devtoolsMenuBroadcaster_ErrorConsole"/>
<menuitem id="appmenu_pageSource"
observes="devtoolsMenuBroadcaster_PageSource"/>
<menuitem id="appmenu_javascriptConsole"
observes="devtoolsMenuBroadcaster_ErrorConsole"/>
</menupopup>
</splitmenu>
<menuseparator class="appmenu-menuseparator"/>

View file

@ -534,12 +534,12 @@
label="&webDeveloperMenu.label;"
accesskey="&webDeveloperMenu.accesskey;">
<menupopup id="menuWebDeveloperPopup">
<menuitem id="javascriptConsole"
observes="devtoolsMenuBroadcaster_ErrorConsole"
accesskey="&errorConsoleCmd.accesskey;"/>
<menuitem id="menu_pageSource"
observes="devtoolsMenuBroadcaster_PageSource"
accesskey="&pageSourceCmd.accesskey;"/>
<menuitem id="javascriptConsole"
observes="devtoolsMenuBroadcaster_ErrorConsole"
accesskey="&errorConsoleCmd.accesskey;"/>
</menupopup>
</menu>
<menuitem id="menu_pageInfo"

View file

@ -383,27 +383,33 @@ function addTopLevelItems(doc) {
attachKeybindingsToBrowser(doc, keys);
// There are hardcoded menu items in the Web Developer menus plus it is a
// location of menu items via overlays from extensions so we want to make
// sure the last seperator and the "Get More Tools..." items are last.
// This will emulate the behavior when devtools menu items were actually
// physically present in browser.xul
// Tools > Web Developer
let menu = doc.getElementById("menuWebDeveloperPopup");
// Insert the Devtools Menu Items before everything else
menu.insertBefore(menuItems, menu.firstChild);
// Move the devtools last seperator and Get More Tools menu items to the bottom
let menu_endSeparator = doc.getElementById("menu_devToolsEndSeparator");
let menu_getMoreDevtools = doc.getElementById("menu_getMoreDevtools");
menu.insertBefore(menu_getMoreDevtools, null);
menu.insertBefore(menu_endSeparator, menu_getMoreDevtools);
// Application Menu > Web Developer (If existant)
let appmenu = doc.getElementById("appmenu_webDeveloper_popup");
if (appmenu) {
appmenu.appendChild(appmenuItems);
// There is still "Page Source" menuitem hardcoded into browser.xul. Instead
// of manually inserting everything around it, move it to the expected
// position.
let appmenu_pageSource = doc.getElementById("appmenu_pageSource");
// Insert the Devtools Menu Items after the hardcoded idless seperator
appmenu.insertBefore(appmenuItems, appmenu.childNodes[2].nextSibling);
// Move the devtools last seperator and Get More Tools menu items to the bottom
let appmenu_endSeparator = doc.getElementById("appmenu_devToolsEndSeparator");
appmenu.insertBefore(appmenu_pageSource, appmenu_endSeparator);
let appmenu_getMoreDevtools = doc.getElementById("appmenu_getMoreDevtools");
appmenu.insertBefore(appmenu_getMoreDevtools, null);
appmenu.insertBefore(appmenu_endSeparator, appmenu_getMoreDevtools);
}
let menu = doc.getElementById("menuWebDeveloperPopup");
menu.appendChild(menuItems);
// There is still "Page Source" menuitem hardcoded into browser.xul. Instead
// of manually inserting everything around it, move it to the expected
// position.
let menu_pageSource = doc.getElementById("menu_pageSource");
let menu_endSeparator = doc.getElementById("menu_devToolsEndSeparator");
menu.insertBefore(menu_pageSource, menu_endSeparator);
}
/**