Merge pull request #77 from kristijanribaric/fix/prevent-infinite-loop-when-pinning-a-tab

Fix: Handle TabClose event and middle click in ZenPinnedTabManager
This commit is contained in:
mr. m 🤙 2024-11-04 18:23:00 +02:00 committed by GitHub
commit aada165021
No known key found for this signature in database
GPG key ID: B5690EEEBB952194

View file

@ -178,10 +178,9 @@
delete tab._zenClickEventListener; delete tab._zenClickEventListener;
} }
break; break;
// TODO: Do this in a better way. Closing a second window could trigger remove tab and delete it from db case "TabClose":
// case "TabClose": this._removePinnedAttributes(tab);
// this._removePinnedAttributes(tab); break;
// break;
default: default:
console.warn('ZenPinnedTabManager: Unhandled tab event', action); console.warn('ZenPinnedTabManager: Unhandled tab event', action);
break; break;
@ -189,8 +188,8 @@
} }
_onTabClick(e) { _onTabClick(e) {
const tab = e.target; const tab = e.target?.closest("tab");
if (e.button === 1) { if (e.button === 1 && tab) {
this._onCloseTabShortcut(e, tab); this._onCloseTabShortcut(e, tab);
} }
} }
@ -393,7 +392,7 @@
const element = window.MozXULElement.parseXULToFragment(` const element = window.MozXULElement.parseXULToFragment(`
<menuitem id="context_zen-pin-tab-global" <menuitem id="context_zen-pin-tab-global"
data-lazy-l10n-id="pin-tab-global" data-lazy-l10n-id="tab-context-zen-pin-tab-global"
hidden="true" hidden="true"
oncommand="gZenPinnedTabManager._addGlobalPin();"/> oncommand="gZenPinnedTabManager._addGlobalPin();"/>
`); `);
@ -413,7 +412,7 @@
const isVisible = contextTab.pinned && !contextTab.multiselected; const isVisible = contextTab.pinned && !contextTab.multiselected;
document.getElementById("context_zen-reset-pinned-tab").hidden = !isVisible || !contextTab.getAttribute("zen-pin-id"); document.getElementById("context_zen-reset-pinned-tab").hidden = !isVisible || !contextTab.getAttribute("zen-pin-id");
document.getElementById("context_zen-replace-pinned-url-with-current").hidden = !isVisible; document.getElementById("context_zen-replace-pinned-url-with-current").hidden = !isVisible;
document.getElementById("context_zen-pin-tab-global").hidden = contextTab.pinned; document.getElementById("context_zen-pin-tab-global").hidden = contextTab.pinned || !ZenWorkspaces.workspaceEnabled;
document.getElementById("context_zen-pinned-tab-separator").hidden = !isVisible; document.getElementById("context_zen-pinned-tab-separator").hidden = !isVisible;
} }
} }