|
1 | 1 | // ==UserScript== |
2 | 2 | // @name Toggle Menubar Hotkey |
3 | | -// @version 1.1 |
| 3 | +// @version 1.1.1 |
4 | 4 | // @author aminomancer |
5 | 5 | // @homepage https://github.com/aminomancer |
6 | 6 | // @description Press alt+M to toggle the menubar. |
|
31 | 31 | function init() { |
32 | 32 | if (!hotkeyRegistered) return; |
33 | 33 | document.getElementById("toolbar-menubar").setAttribute("key", hotkeyId); |
34 | | - window.onViewToolbarsPopupShowing = function (aEvent, aInsertPoint) { |
35 | | - var popup = aEvent.target; |
36 | | - if (popup != aEvent.currentTarget) return; |
37 | | - for (var i = popup.children.length - 1; i >= 0; --i) { |
38 | | - var deadItem = popup.children[i]; |
39 | | - if (deadItem.hasAttribute("toolbarId")) popup.removeChild(deadItem); |
40 | | - } |
41 | | - MozXULElement.insertFTLIfNeeded("browser/toolbarContextMenu.ftl"); |
42 | | - let firstMenuItem = aInsertPoint || popup.firstElementChild; |
43 | | - let toolbarNodes = gNavToolbox.querySelectorAll("toolbar"); |
44 | | - for (let toolbar of toolbarNodes) { |
45 | | - if (!toolbar.hasAttribute("toolbarname")) continue; |
46 | | - |
47 | | - if (toolbar.id == "PersonalToolbar") { |
48 | | - let menu = BookmarkingUI.buildBookmarksToolbarSubmenu(toolbar); |
49 | | - popup.insertBefore(menu, firstMenuItem); |
50 | | - } else { |
51 | | - let menuItem = document.createXULElement("menuitem"); |
52 | | - menuItem.setAttribute("id", "toggle_" + toolbar.id); |
53 | | - menuItem.setAttribute("toolbarId", toolbar.id); |
54 | | - menuItem.setAttribute("type", "checkbox"); |
55 | | - menuItem.setAttribute("label", toolbar.getAttribute("toolbarname")); |
56 | | - let hidingAttribute = |
57 | | - toolbar.getAttribute("type") == "menubar" ? "autohide" : "collapsed"; |
58 | | - menuItem.setAttribute( |
59 | | - "checked", |
60 | | - toolbar.getAttribute(hidingAttribute) != "true" |
61 | | - ); |
62 | | - menuItem.setAttribute("accesskey", toolbar.getAttribute("accesskey")); |
63 | | - if (toolbar.hasAttribute("key")) |
64 | | - menuItem.setAttribute("key", toolbar.getAttribute("key")); |
65 | | - popup.insertBefore(menuItem, firstMenuItem); |
66 | | - menuItem.addEventListener("command", onViewToolbarCommand); |
67 | | - } |
68 | | - } |
69 | | - let moveToPanel = popup.querySelector(".customize-context-moveToPanel"); |
70 | | - let removeFromToolbar = popup.querySelector(".customize-context-removeFromToolbar"); |
71 | | - if (!moveToPanel || !removeFromToolbar) return; |
72 | | - let toolbarItem = popup.triggerNode; |
73 | | - if (toolbarItem && toolbarItem.localName == "toolbarpaletteitem") |
74 | | - toolbarItem = toolbarItem.firstElementChild; |
75 | | - else if (toolbarItem && toolbarItem.localName != "toolbar") |
76 | | - while (toolbarItem && toolbarItem.parentElement) { |
77 | | - let parent = toolbarItem.parentElement; |
78 | | - if ( |
79 | | - (parent.classList && parent.classList.contains("customization-target")) || |
80 | | - parent.getAttribute("overflowfortoolbar") || |
81 | | - parent.localName == "toolbarpaletteitem" || |
82 | | - parent.localName == "toolbar" |
83 | | - ) |
84 | | - break; |
85 | | - toolbarItem = parent; |
86 | | - } |
87 | | - else toolbarItem = null; |
88 | | - let showTabStripItems = toolbarItem && toolbarItem.id == "tabbrowser-tabs"; |
89 | | - for (let node of popup.querySelectorAll('menuitem[contexttype="toolbaritem"]')) |
90 | | - node.hidden = showTabStripItems; |
91 | | - for (let node of popup.querySelectorAll('menuitem[contexttype="tabbar"]')) |
92 | | - node.hidden = !showTabStripItems; |
93 | | - document |
94 | | - .getElementById("toolbar-context-menu") |
95 | | - .querySelectorAll("[data-lazy-l10n-id]") |
96 | | - .forEach((el) => { |
97 | | - el.setAttribute("data-l10n-id", el.getAttribute("data-lazy-l10n-id")); |
98 | | - el.removeAttribute("data-lazy-l10n-id"); |
99 | | - }); |
100 | | - let menuSeparator = document.getElementById("toolbarItemsMenuSeparator"); |
101 | | - menuSeparator.hidden = false; |
102 | | - document.getElementById("toolbarNavigatorItemsMenuSeparator").hidden = |
103 | | - !showTabStripItems; |
104 | | - if ( |
105 | | - !CustomizationHandler.isCustomizing() && |
106 | | - CustomizableUI.isSpecialWidget(toolbarItem?.id || "") |
107 | | - ) { |
108 | | - moveToPanel.hidden = true; |
109 | | - removeFromToolbar.hidden = true; |
110 | | - menuSeparator.hidden = !showTabStripItems; |
111 | | - } |
112 | | - if (showTabStripItems) { |
113 | | - let multipleTabsSelected = !!gBrowser.multiSelectedTabsCount; |
114 | | - document.getElementById("toolbar-context-bookmarkSelectedTabs").hidden = |
115 | | - !multipleTabsSelected; |
116 | | - document.getElementById("toolbar-context-bookmarkSelectedTab").hidden = |
117 | | - multipleTabsSelected; |
118 | | - document.getElementById("toolbar-context-reloadSelectedTabs").hidden = |
119 | | - !multipleTabsSelected; |
120 | | - document.getElementById("toolbar-context-reloadSelectedTab").hidden = |
121 | | - multipleTabsSelected; |
122 | | - document.getElementById("toolbar-context-selectAllTabs").disabled = |
123 | | - gBrowser.allTabsSelected(); |
124 | | - document.getElementById("toolbar-context-undoCloseTab").disabled = |
125 | | - SessionStore.getClosedTabCount(window) == 0; |
126 | | - return; |
127 | | - } |
128 | | - let movable = |
129 | | - toolbarItem && toolbarItem.id && CustomizableUI.isWidgetRemovable(toolbarItem); |
130 | | - if (movable) { |
131 | | - if (CustomizableUI.isSpecialWidget(toolbarItem.id)) |
132 | | - moveToPanel.setAttribute("disabled", true); |
133 | | - else moveToPanel.removeAttribute("disabled"); |
134 | | - removeFromToolbar.removeAttribute("disabled"); |
135 | | - } else { |
136 | | - moveToPanel.setAttribute("disabled", true); |
137 | | - removeFromToolbar.setAttribute("disabled", true); |
138 | | - } |
139 | | - }; |
| 34 | + let src = onViewToolbarsPopupShowing.toSource(); |
| 35 | + if (src.startsWith("function")) |
| 36 | + eval( |
| 37 | + `window.onViewToolbarsPopupShowing = function uc_onViewToolbarsPopupShowing ` + |
| 38 | + src |
| 39 | + .replace(/^function onViewToolbarsPopupShowing/, "") |
| 40 | + .replace( |
| 41 | + /if \(popup\.id != \"toolbar-context-menu\"\)/, |
| 42 | + `if (toolbar.hasAttribute("key"))` |
| 43 | + ) |
| 44 | + ); |
140 | 45 | } |
141 | 46 |
|
142 | 47 | if (gBrowserInit.delayedStartupFinished) { |
|
0 commit comments