feat: Also change icons and labels if the tab is pending, b=no-bug, c=tabs, workspaces

This commit is contained in:
mr. m
2025-09-01 16:09:59 +02:00
parent 81e854a89f
commit 7a4cdaa45c
2 changed files with 31 additions and 1 deletions

View File

@@ -92,6 +92,7 @@
}
onTabIconChanged(tab, url = null) {
tab.dispatchEvent(new CustomEvent('ZenTabIconChanged', { bubbles: true, detail: { tab } }));
const iconUrl = url ?? tab.iconImage.src;
if (!iconUrl && tab.hasAttribute('zen-pin-id')) {
try {
@@ -1436,6 +1437,7 @@
}
async onTabLabelChanged(tab) {
tab.dispatchEvent(new CustomEvent('ZenTabLabelChanged', { detail: { tab } }));
if (!this._pinsCache) {
return;
}

View File

@@ -40,6 +40,8 @@
'TabHide',
'TabShow',
'TabMove',
'ZenTabIconChanged',
'ZenTabLabelChanged',
];
const eventListener = this.#handleEvent.bind(this);
for (const event of kEvents) {
@@ -104,6 +106,12 @@
case 'TabMove':
this.#onTabMove(event);
break;
case 'ZenTabIconChanged':
this.#onTabIconChanged(event);
break;
case 'ZenTabLabelChanged':
this.#onTabLabelChanged(event);
break;
default:
console.warn(`Unhandled event type: ${event.type}`);
break;
@@ -156,6 +164,26 @@
}
}
#onTabIconChanged(event) {
this.#updateTabIconAndLabel(event);
}
#onTabLabelChanged(event) {
this.#updateTabIconAndLabel(event);
}
#updateTabIconAndLabel(event) {
const targetTab = event.target;
if (targetTab.hasAttribute("pending")) {
const tabId = this.#getTabId(targetTab);
const tabToChange = this.#getTabWithId(tabId);
if (tabToChange) {
gBrowser.setIcon(tabToChange, gBrowser.getIcon(targetTab));
gBrowser._setTabLabel(tabToChange, targetTab.label);
}
}
}
#onTabAddedToEssentials(event) {
const targetTab = event.target;
const tabId = this.#getTabId(targetTab);
@@ -209,7 +237,7 @@
const isEssential = isPinned && targetTab.hasAttribute('zen-essential');
const elementIndex = targetTab.elementIndex;
const duplicatedTab = SessionStore.duplicateTab(window, targetTab, 0, true);
const duplicatedTab = SessionStore.duplicateTab(window, targetTab, 0);
if (isEssential) {
gZenPinnedTabManager.addToEssentials(duplicatedTab);
} else if (isPinned) {