feat: Allow tabs to have custom icons and other cleanups, p=#11697

* feat: Allow tabs to have custom icons and other cleanups, b=closes #11686, closees https://github.com/zen-browser/desktop/issues/9972, closes https://github.com/zen-browser/desktop/issues/9251, c=folders, workspaces, tabs, common


* chore: Lint, b=no-bug, c=tabs
This commit is contained in:
mr. m
2025-12-22 20:26:44 +01:00
committed by GitHub
parent d93c46fe20
commit 578c28df92
17 changed files with 234 additions and 175 deletions

View File

@@ -1152,7 +1152,9 @@ class nsZenWorkspaces {
const item = document.createXULElement('menuitem');
item.className = 'zen-workspace-context-menu-item';
item.setAttribute('zen-workspace-id', workspace.uuid);
item.setAttribute('disabled', workspace.uuid === this.activeWorkspace);
if (workspace.uuid === this.activeWorkspace) {
item.setAttribute('disabled', true);
}
let name = workspace.name;
const iconIsSvg = workspace.icon && workspace.icon.endsWith('.svg');
if (workspace.icon && workspace.icon !== '' && !iconIsSvg) {
@@ -2311,25 +2313,20 @@ class nsZenWorkspaces {
if (gZenWorkspaces.privateWindowOrDisabled) return;
const workspaces = this.getWorkspaces();
const menuPopup = document.getElementById('context-zen-change-workspace-tab-menu-popup');
const menuPopup = document.getElementById('moveTabOptionsMenu');
if (!menuPopup) {
return;
}
menuPopup.innerHTML = '';
const activeWorkspace = this.getActiveWorkspace();
for (let workspace of workspaces) {
const menuItem = document.createXULElement('menuitem');
menuItem.setAttribute('label', workspace.name);
menuItem.setAttribute('zen-workspace-id', workspace.uuid);
for (const item of menuPopup.querySelectorAll('.zen-workspace-context-menu-item')) {
item.remove();
}
const separator = document.createXULElement('menuseparator');
separator.classList.add('zen-workspace-context-menu-item');
menuPopup.prepend(separator);
for (let workspace of workspaces.reverse()) {
const menuItem = this.generateMenuItemForWorkspace(workspace);
menuItem.setAttribute('command', 'cmd_zenChangeWorkspaceTab');
if (workspace.uuid === activeWorkspace.uuid) {
menuItem.setAttribute('disabled', 'true');
}
menuPopup.appendChild(menuItem);
menuPopup.prepend(menuItem);
}
}
@@ -2687,7 +2684,6 @@ class nsZenWorkspaces {
const commandsToDisable = [
'cmd_zenOpenFolderCreation',
'cmd_zenOpenWorkspaceCreation',
'zen-context-menu-new-folder',
'zen-context-menu-new-folder-toolbar',
];
commandsToDisable.forEach((cmd) => {
@@ -2698,16 +2694,6 @@ class nsZenWorkspaces {
});
return;
}
const menu = document.createXULElement('menu');
menu.setAttribute('id', 'context-zen-change-workspace-tab');
menu.setAttribute('data-l10n-id', 'context-zen-change-workspace-tab');
const menuPopup = document.createXULElement('menupopup');
menuPopup.setAttribute('id', 'context-zen-change-workspace-tab-menu-popup');
menu.appendChild(menuPopup);
document.getElementById('context_moveTabOptions').after(menu);
}
async changeTabWorkspace(workspaceID) {