Merge branch 'zen-browser:main' into main

This commit is contained in:
Bryan Galdámez 2024-09-13 23:45:42 -06:00 committed by GitHub
commit 1dcfec3d5a
No known key found for this signature in database
GPG key ID: B5690EEEBB952194

View file

@ -1,3 +1,4 @@
var ZenWorkspaces = {
async init() {
let docElement = document.documentElement;
@ -95,7 +96,7 @@ var ZenWorkspaces = {
if (tabs.length === 1) {
this._createNewTabForWorkspace({ uuid: workspaceID });
// We still need to close other tabs in the workspace
this.changeWorkspace({ uuid: workspaceID });
this.changeWorkspace({ uuid: workspaceID }, true);
}
}
},
@ -469,10 +470,15 @@ var ZenWorkspaces = {
button.removeAttribute('disabled');
},
get _shouldAllowPinTab() {
return Services.prefs.getBoolPref('zen.workspaces.individual-pinned-tabs');
},
async changeWorkspace(window, onInit = false) {
if (!this.workspaceEnabled) {
return;
}
const shouldAllowPinnedTabs = this._shouldAllowPinTab;
let firstTab = undefined;
let workspaces = await this._workspaces();
for (let workspace of workspaces.workspaces) {
@ -481,7 +487,7 @@ var ZenWorkspaces = {
this.unsafeSaveWorkspaces(workspaces);
console.info('ZenWorkspaces: Changing workspace to', window.uuid);
for (let tab of gBrowser.tabs) {
if ((tab.getAttribute('zen-workspace-id') === window.uuid && !tab.pinned) || !tab.hasAttribute('zen-workspace-id')) {
if ((tab.getAttribute('zen-workspace-id') === window.uuid && !(tab.pinned && !shouldAllowPinnedTabs)) || !tab.hasAttribute('zen-workspace-id')) {
if (!firstTab) {
firstTab = tab;
} else if (gBrowser.selectedTab === tab) {
@ -504,7 +510,7 @@ var ZenWorkspaces = {
}
for (let tab of gBrowser.tabs) {
if (tab.getAttribute('zen-workspace-id') !== window.uuid) {
gBrowser.hideTab(tab);
gBrowser.hideTab(tab, undefined, shouldAllowPinnedTabs);
}
}
document.documentElement.setAttribute('zen-workspace-id', window.uuid);
@ -512,6 +518,8 @@ var ZenWorkspaces = {
await this._updateWorkspacesButton();
await this._propagateWorkspaceData();
await this._updateWorkspacesChangeContextMenu();
document.getElementById('tabbrowser-tabs')._positionPinnedTabs();
},
async _updateWorkspacesChangeContextMenu() {
@ -683,6 +691,17 @@ var ZenWorkspaces = {
},
// Tab browser utilities
createContainerTabMenu(event) {
let window = event.target.ownerGlobal;
const workspace = this._workspaceCache.workspaces.find((workspace) => this._contextMenuId === workspace.uuid);
let containerTabId = workspace.containerTabId;
return window.createUserContextMenu(event, {
isContextMenu: true,
excludeUserContextId: containerTabId,
showDefaultTab: true,
});
},
getContextIdIfNeeded(userContextId) {
if (typeof userContextId !== "undefined" || !this.workspaceEnabled) {
return [userContextId, false];