diff --git a/src/ZenSidebarManager.mjs b/src/ZenSidebarManager.mjs
index 218a7b6..b08e056 100644
--- a/src/ZenSidebarManager.mjs
+++ b/src/ZenSidebarManager.mjs
@@ -421,6 +421,7 @@ var gZenBrowserManagerSidebar = {
browserContainers.appendChild(browser);
if (data.ua) {
browser.browsingContext.customUserAgent = this.DEFAULT_MOBILE_USER_AGENT;
+ browser.reload();
}
browser.docShellIsActive = true;
},
diff --git a/src/ZenTabUnloader.mjs b/src/ZenTabUnloader.mjs
index 8fd6edb..cb208fc 100644
--- a/src/ZenTabUnloader.mjs
+++ b/src/ZenTabUnloader.mjs
@@ -1,8 +1,5 @@
{
- const ZEN_TAB_UNLOADER_PREF = "zen.tab-unloader.enabled";
- const ZEN_TAB_UNLOADER_TIMEOUT_PREF = "zen.tab-unloader.timeout";
-
const lazy = {};
XPCOMUtils.defineLazyPreferenceGetter(
@@ -16,7 +13,7 @@
lazy,
"zenTabUnloaderTimeout",
"zen.tab-unloader.timeout-minutes",
- 5
+ 20
);
XPCOMUtils.defineLazyPreferenceGetter(
@@ -152,6 +149,7 @@
if (!lazy.zenTabUnloaderEnabled) {
return;
}
+ this.insertIntoContextMenu();
this.observer = new ZenTabsObserver();
this.intervalUnloader = new ZenTabsIntervalUnloader(this);
this.observer.addTabsListener(this.onTabEvent.bind(this));
@@ -220,10 +218,52 @@
return gBrowser.tabs;
}
+ insertIntoContextMenu() {
+ const element = window.MozXULElement.parseXULToFragment(`
+
+
+
+ `);
+ document.getElementById('context_closeDuplicateTabs').parentNode.appendChild(element);
+ }
+
+ unloadTab() {
+ const tabs = TabContextMenu.contextTab.multiselected ? gBrowser.selectedTabs : [TabContextMenu.contextTab];
+ for (const tab of tabs) {
+ gBrowser.discardBrowser(tab);
+ }
+ }
+
+ preventUnloadTab() {
+ const tabs = TabContextMenu.contextTab.multiselected ? gBrowser.selectedTabs : [TabContextMenu.contextTab];
+ for (const tab of tabs) {
+ tab.zenIgnoreUnload = true;
+ }
+ }
+
+ ignoreUnloadTab() {
+ const tabs = TabContextMenu.contextTab.multiselected ? gBrowser.selectedTabs : [TabContextMenu.contextTab];
+ for (const tab of tabs) {
+ tab.zenIgnoreUnload = false;
+ }
+ }
+
canUnloadTab(tab, currentTimestamp, excludedUrls) {
if (tab.pinned || tab.selected || tab.multiselected
|| tab.hasAttribute("busy") || tab.hasAttribute("pending")
- || !tab.linkedPanel || tab.splitView || tab.attention
+ || !tab.linkedPanel || tab.splitView || tab.attention || tab.soundPlaying
+ || tab.zenIgnoreUnload
|| excludedUrls.some(url => url.test(tab.linkedBrowser.currentURI.spec))) {
return false;
}
diff --git a/src/ZenWorkspaces.mjs b/src/ZenWorkspaces.mjs
index f154c7f..a076656 100644
--- a/src/ZenWorkspaces.mjs
+++ b/src/ZenWorkspaces.mjs
@@ -127,7 +127,7 @@ var ZenWorkspaces = {
}
},
- _kIcons: JSON.parse(Services.prefs.getStringPref("zen.workspaces.icons")).map((icon) => icon),
+ _kIcons: JSON.parse(Services.prefs.getStringPref("zen.workspaces.icons")).map((icon) => Array.from(icon)[0]),
_initializeWorkspaceCreationIcons() {
let container = document.getElementById('PanelUI-zen-workspaces-create-icons-container');
@@ -248,7 +248,7 @@ var ZenWorkspaces = {
if (this.workspaceHasIcon(workspace)) {
return workspace.icon;
}
- return workspace.name[0].toUpperCase();
+ return Array.from(workspace.name)[0].toUpperCase();
},
get shouldShowContainers() {