Improved stylings for split view goups

This commit is contained in:
mr. M
2025-03-01 14:23:41 +01:00
parent 3eed6de797
commit 595aa9b062
3 changed files with 45 additions and 17 deletions

View File

@@ -69,6 +69,8 @@ class ZenViewSplitter extends ZenDOMOperatedFeature {
_edgeHoverSize;
minResizeWidth;
MAX_TABS = 4;
init() {
XPCOMUtils.defineLazyPreferenceGetter(this, 'canChangeTabOnHover', 'zen.splitView.change-on-hover', false);
XPCOMUtils.defineLazyPreferenceGetter(this, 'minResizeWidth', 'zen.splitView.min-resize-width', 7);
@@ -673,7 +675,7 @@ class ZenViewSplitter extends ZenDOMOperatedFeature {
* @returns {boolean} True if the tabs can be split, false otherwise.
*/
contextCanSplitTabs() {
if (window.gBrowser.selectedTabs.length < 2) {
if (window.gBrowser.selectedTabs.length < 2 || window.gBrowser.selectedTabs.length > this.MAX_TABS) {
return false;
}
for (const tab of window.gBrowser.selectedTabs) {
@@ -707,8 +709,8 @@ class ZenViewSplitter extends ZenDOMOperatedFeature {
*/
splitTabs(tabs, gridType) {
const firstisPinned = tabs[0].pinned;
tabs = tabs.filter((t) => t.pinned === firstisPinned);
if (tabs.length < 2) {
tabs = tabs.filter((t) => t.pinned === firstisPinned && !t.hidden && !t.hasAttribute('zen-empty-tab'));
if (tabs.length < 2 || tabs.length > this.MAX_TABS) {
return;
}
@@ -724,9 +726,10 @@ class ZenViewSplitter extends ZenDOMOperatedFeature {
group.layoutTree = this.calculateLayoutTree([...new Set(group.tabs.concat(tabs))], gridType);
} else {
// Add any tabs that are not already in the group
for (const tab of tabs) {
if (!group.tabs.includes(tab) && tab.pinned === group.pinned) {
group.tabs.push(tab);
for (let i = 0; i < tabs.length; i++) {
const tab = tabs[i];
if (!group.tabs.includes(tab) && tab.pinned === !!group.pinned) {
gBrowser.moveTabToGroup(tab, this._getSplitViewGroup(tabs));
this.addTabToSplit(tab, group.layoutTree);
}
}
@@ -1302,7 +1305,7 @@ class ZenViewSplitter extends ZenDOMOperatedFeature {
const groupIndex = this._data.findIndex((group) => group.tabs.includes(droppedOnTab));
const group = this._data[groupIndex];
if (!group.tabs.includes(draggedTab)) {
if (!group.tabs.includes(draggedTab) && group.tabs.length < this.MAX_TABS) {
// First move the tab to the split view group
let splitGroup = droppedOnTab.group;
if (splitGroup && (!draggedTab.group || draggedTab.group !== splitGroup)) {