summaryrefslogtreecommitdiffstats
path: root/application/palemoon/base/content/browser.js
diff options
context:
space:
mode:
authorFranklinDM <mrmineshafter17@gmail.com>2018-11-16 22:58:46 +0800
committerFranklinDM <mrmineshafter17@gmail.com>2018-11-16 22:58:46 +0800
commiteff89e1c9d7ccfbfb09fb615848b7e288e8b2c7d (patch)
tree11fd80a72adbb48fa70299742116df62750cf57e /application/palemoon/base/content/browser.js
parent719234847ecbab2fe8b4b4c2f153fa0c12bffbc6 (diff)
downloadUXP-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.js40
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;
+ }
}
};