mirror of
https://repo.dactyloidae.xyz/Dactyloidae/UXP.git
synced 2026-09-07 16:28:38 +09:00
Issue #638 - Part 5: Add mute/unmute option to tab context menu
This commit is contained in:
parent
8714e0d4f7
commit
b0beabea4c
3 changed files with 46 additions and 0 deletions
|
|
@ -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;
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
|
|
|
|||
|
|
@ -87,6 +87,7 @@
|
|||
onpopuphidden="if (event.target == this) TabContextMenu.contextTab = null;">
|
||||
<menuitem id="context_reloadTab" label="&reloadTab.label;" accesskey="&reloadTab.accesskey;"
|
||||
oncommand="gBrowser.reloadTab(TabContextMenu.contextTab);"/>
|
||||
<menuitem id="context_toggleMuteTab" oncommand="TabContextMenu.contextTab.toggleMuteAudio();"/>
|
||||
<menuseparator/>
|
||||
<menuitem id="context_pinTab" label="&pinTab.label;"
|
||||
accesskey="&pinTab.accesskey;"
|
||||
|
|
|
|||
|
|
@ -397,3 +397,8 @@ slowStartup.helpButton.label = Learn How to Speed It Up
|
|||
slowStartup.helpButton.accesskey = L
|
||||
slowStartup.disableNotificationButton.label = Don't Tell Me Again
|
||||
slowStartup.disableNotificationButton.accesskey = A
|
||||
|
||||
muteTab.label = Mute Tab
|
||||
muteTab.accesskey = M
|
||||
unmuteTab.label = Unmute Tab
|
||||
unmuteTab.accesskey = M
|
||||
Loading…
Add table
Add a link
Reference in a new issue