diff options
author | FranklinDM <mrmineshafter17@gmail.com> | 2018-11-16 22:58:46 +0800 |
---|---|---|
committer | FranklinDM <mrmineshafter17@gmail.com> | 2018-11-16 22:58:46 +0800 |
commit | eff89e1c9d7ccfbfb09fb615848b7e288e8b2c7d (patch) | |
tree | 11fd80a72adbb48fa70299742116df62750cf57e /application/palemoon/base/content/browser.js | |
parent | 719234847ecbab2fe8b4b4c2f153fa0c12bffbc6 (diff) | |
download | UXP-eff89e1c9d7ccfbfb09fb615848b7e288e8b2c7d.tar UXP-eff89e1c9d7ccfbfb09fb615848b7e288e8b2c7d.tar.gz UXP-eff89e1c9d7ccfbfb09fb615848b7e288e8b2c7d.tar.lz UXP-eff89e1c9d7ccfbfb09fb615848b7e288e8b2c7d.tar.xz UXP-eff89e1c9d7ccfbfb09fb615848b7e288e8b2c7d.zip |
Issue #638 - Part 5: Add mute/unmute option to tab context menu
Diffstat (limited to 'application/palemoon/base/content/browser.js')
-rw-r--r-- | application/palemoon/base/content/browser.js | 40 |
1 files changed, 40 insertions, 0 deletions
diff --git a/application/palemoon/base/content/browser.js b/application/palemoon/base/content/browser.js index 4167f186c..5d44f0066 100644 --- a/application/palemoon/base/content/browser.js +++ b/application/palemoon/base/content/browser.js @@ -7021,6 +7021,17 @@ function restoreLastSession() { var TabContextMenu = { contextTab: null, + _updateToggleMuteMenuItem(aTab, aConditionFn) { + ["muted", "soundplaying"].forEach(attr => { + if (!aConditionFn || aConditionFn(attr)) { + if (aTab.hasAttribute(attr)) { + aTab.toggleMuteMenuItem.setAttribute(attr, "true"); + } else { + aTab.toggleMuteMenuItem.removeAttribute(attr); + } + } + }); + }, updateContextMenu: function updateContextMenu(aPopupMenu) { this.contextTab = aPopupMenu.triggerNode.localName == "tab" ? aPopupMenu.triggerNode : gBrowser.selectedTab; @@ -7067,6 +7078,35 @@ var TabContextMenu = { bookmarkAllTabs.hidden = this.contextTab.pinned; if (!bookmarkAllTabs.hidden) PlacesCommandHook.updateBookmarkAllTabsCommand(); + + // Adjust the state of the toggle mute menu item. + let toggleMute = document.getElementById("context_toggleMuteTab"); + if (this.contextTab.hasAttribute("muted")) { + toggleMute.label = gNavigatorBundle.getString("unmuteTab.label"); + toggleMute.accessKey = gNavigatorBundle.getString("unmuteTab.accesskey"); + } else { + toggleMute.label = gNavigatorBundle.getString("muteTab.label"); + toggleMute.accessKey = gNavigatorBundle.getString("muteTab.accesskey"); + } + + this.contextTab.toggleMuteMenuItem = toggleMute; + this._updateToggleMuteMenuItem(this.contextTab); + + this.contextTab.addEventListener("TabAttrModified", this, false); + aPopupMenu.addEventListener("popuphiding", this, false); + }, + handleEvent(aEvent) { + switch (aEvent.type) { + case "popuphiding": + gBrowser.removeEventListener("TabAttrModified", this); + aEvent.target.removeEventListener("popuphiding", this); + break; + case "TabAttrModified": + let tab = aEvent.target; + this._updateToggleMuteMenuItem(tab, + attr => aEvent.detail.changed.indexOf(attr) >= 0); + break; + } } }; |