Refactor tab addition logic and streamline tab filtering in Zen components

This commit is contained in:
mr. M
2025-03-02 21:36:53 +01:00
parent 0cb7b0af95
commit 7ca57da6fe
2 changed files with 22 additions and 16 deletions

View File

@@ -600,10 +600,14 @@
} }
addToEssentials(tab) { addToEssentials(tab) {
const tabs = tab ? ( const tabs = tab
// if it's already an array, dont make it [tab] ? // if it's already an array, dont make it [tab]
tab?.length ? tab : [tab] tab?.length
) : TabContextMenu.contextTab.multiselected ? gBrowser.selectedTabs : [TabContextMenu.contextTab]; ? tab
: [tab]
: TabContextMenu.contextTab.multiselected
? gBrowser.selectedTabs
: [TabContextMenu.contextTab];
for (let i = 0; i < tabs.length; i++) { for (let i = 0; i < tabs.length; i++) {
const tab = tabs[i]; const tab = tabs[i];
if (tab.hasAttribute('zen-essential')) { if (tab.hasAttribute('zen-essential')) {

View File

@@ -824,9 +824,7 @@ class ZenViewSplitter extends ZenDOMOperatedFeature {
* @param {string} gridType - The type of grid layout. * @param {string} gridType - The type of grid layout.
*/ */
splitTabs(tabs, gridType, initialIndex = 0) { splitTabs(tabs, gridType, initialIndex = 0) {
tabs = tabs.filter( tabs = tabs.filter((t) => !t.hidden && !t.hasAttribute('zen-empty-tab'));
(t) => !t.hidden && !t.hasAttribute('zen-empty-tab')
);
if (tabs.length < 2 || tabs.length > this.MAX_TABS) { if (tabs.length < 2 || tabs.length > this.MAX_TABS) {
return; return;
} }
@@ -1494,15 +1492,19 @@ class ZenViewSplitter extends ZenDOMOperatedFeature {
// Put tabs always as if it was dropped from the left // Put tabs always as if it was dropped from the left
this.splitTabs([draggedTab, droppedOnTab], gridType, 1); this.splitTabs([draggedTab, droppedOnTab], gridType, 1);
if (draggedTab.linkedBrowser) { if (draggedTab.linkedBrowser) {
gZenUIManager.motion.animate(draggedTab.linkedBrowser.closest('.browserSidebarContainer'), { gZenUIManager.motion.animate(
scale: [0.98, 1], draggedTab.linkedBrowser.closest('.browserSidebarContainer'),
opacity: [0, 1], {
}, { scale: [0.98, 1],
type: 'spring', opacity: [0, 1],
bounce: 0.6, },
duration: 0.5, {
delay: 0.1, type: 'spring',
}); bounce: 0.6,
duration: 0.5,
delay: 0.1,
}
);
} }
} }
} }