mirror of
https://github.com/zen-browser/desktop.git
synced 2025-10-17 15:21:53 +00:00
Merge pull request #7464 from zen-browser/new-split-essentials
Allow splitting essentials and pinned tabs
This commit is contained in:
@@ -188,8 +188,8 @@ class ZenViewSplitter extends ZenDOMOperatedFeature {
|
|||||||
this.fakeBrowser ||
|
this.fakeBrowser ||
|
||||||
!this._lastOpenedTab ||
|
!this._lastOpenedTab ||
|
||||||
(this._lastOpenedTab &&
|
(this._lastOpenedTab &&
|
||||||
(this._lastOpenedTab.getAttribute('zen-workspace-id') !== draggedTab.getAttribute('zen-workspace-id') ||
|
this._lastOpenedTab.getAttribute('zen-workspace-id') !== draggedTab.getAttribute('zen-workspace-id') &&
|
||||||
this._lastOpenedTab.hasAttribute('zen-essential')))
|
!this._lastOpenedTab.hasAttribute('zen-essential'))
|
||||||
) {
|
) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@@ -887,7 +887,7 @@ class ZenViewSplitter extends ZenDOMOperatedFeature {
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
for (const tab of window.gBrowser.selectedTabs) {
|
for (const tab of window.gBrowser.selectedTabs) {
|
||||||
if (tab.splitView || tab.hasAttribute('zen-empty-tab') || tab.hasAttribute('zen-essential')) {
|
if (tab.splitView || tab.hasAttribute('zen-empty-tab')) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -945,14 +945,14 @@ class ZenViewSplitter extends ZenDOMOperatedFeature {
|
|||||||
*/
|
*/
|
||||||
splitTabs(tabs, gridType, initialIndex = 0) {
|
splitTabs(tabs, gridType, initialIndex = 0) {
|
||||||
// TODO: Add support for splitting essential tabs
|
// TODO: Add support for splitting essential tabs
|
||||||
tabs = tabs.filter((t) => !t.hidden && !t.hasAttribute('zen-empty-tab') && !t.hasAttribute('zen-essential'));
|
tabs = tabs.filter((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;
|
||||||
}
|
}
|
||||||
this._moveTabsToContainer(tabs, tabs[initialIndex]);
|
|
||||||
|
|
||||||
const existingSplitTab = tabs.find((tab) => tab.splitView);
|
const existingSplitTab = tabs.find((tab) => tab.splitView);
|
||||||
if (existingSplitTab) {
|
if (existingSplitTab) {
|
||||||
|
this._moveTabsToContainer(tabs, tabs[initialIndex]);
|
||||||
const groupIndex = this._data.findIndex((group) => group.tabs.includes(existingSplitTab));
|
const groupIndex = this._data.findIndex((group) => group.tabs.includes(existingSplitTab));
|
||||||
const group = this._data[groupIndex];
|
const group = this._data[groupIndex];
|
||||||
const gridTypeChange = gridType && group.gridType !== gridType;
|
const gridTypeChange = gridType && group.gridType !== gridType;
|
||||||
@@ -978,6 +978,24 @@ class ZenViewSplitter extends ZenDOMOperatedFeature {
|
|||||||
this.activateSplitView(group, true);
|
this.activateSplitView(group, true);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// We are here if none of the tabs have been previously split
|
||||||
|
// If there's ANY pinned tab on the list, we clone the pinned tab
|
||||||
|
// state to all the tabs
|
||||||
|
const allArePinned = tabs.every((tab) => tab.pinned);
|
||||||
|
const allAreEssential = tabs.every((tab) => tab.hasAttribute('zen-essential'));
|
||||||
|
const thereIsOnePinned = tabs.some((tab) => tab.pinned);
|
||||||
|
const thereIsOneEssential = tabs.some((tab) => tab.hasAttribute('zen-essential'));
|
||||||
|
|
||||||
|
if ((thereIsOneEssential && !allAreEssential) || (thereIsOnePinned && !allArePinned)) {
|
||||||
|
for (let i = 0; i < tabs.length; i++) {
|
||||||
|
const tab = tabs[i];
|
||||||
|
if (tab.pinned) {
|
||||||
|
tabs[i] = gBrowser.duplicateTab(tab, true);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
gridType ??= 'grid';
|
gridType ??= 'grid';
|
||||||
|
|
||||||
const splitData = {
|
const splitData = {
|
||||||
|
@@ -6,7 +6,7 @@
|
|||||||
"version": {
|
"version": {
|
||||||
"product": "firefox",
|
"product": "firefox",
|
||||||
"version": "137.0.1",
|
"version": "137.0.1",
|
||||||
"candidate": "137.0"
|
"candidate": "137.0.1"
|
||||||
},
|
},
|
||||||
"buildOptions": {
|
"buildOptions": {
|
||||||
"generateBranding": true
|
"generateBranding": true
|
||||||
@@ -19,7 +19,7 @@
|
|||||||
"brandShortName": "Zen",
|
"brandShortName": "Zen",
|
||||||
"brandFullName": "Zen Browser",
|
"brandFullName": "Zen Browser",
|
||||||
"release": {
|
"release": {
|
||||||
"displayVersion": "1.11.1b",
|
"displayVersion": "1.11.2b",
|
||||||
"github": {
|
"github": {
|
||||||
"repo": "zen-browser/desktop"
|
"repo": "zen-browser/desktop"
|
||||||
},
|
},
|
||||||
@@ -39,7 +39,7 @@
|
|||||||
"brandShortName": "Twilight",
|
"brandShortName": "Twilight",
|
||||||
"brandFullName": "Zen Twilight",
|
"brandFullName": "Zen Twilight",
|
||||||
"release": {
|
"release": {
|
||||||
"displayVersion": "1.11.1t",
|
"displayVersion": "1.11.2t",
|
||||||
"github": {
|
"github": {
|
||||||
"repo": "zen-browser/desktop"
|
"repo": "zen-browser/desktop"
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user