mirror of
https://github.com/zen-browser/desktop.git
synced 2026-08-26 08:21:34 +00:00
Merge branch 'dev' into drag-and-drop-refactor
Signed-off-by: mr. m <91018726+mr-cheffy@users.noreply.github.com>
This commit is contained in:
@@ -1,5 +1,5 @@
|
||||
diff --git a/browser/components/sessionstore/SessionStore.sys.mjs b/browser/components/sessionstore/SessionStore.sys.mjs
|
||||
index 2c2f43bf743ef458b378e85e9ed44a971711e1d9..4439fe5fb3c7002b173415b615892ef356b22959 100644
|
||||
index 2c2f43bf743ef458b378e85e9ed44a971711e1d9..697dde4378c43ae6db46a6b7eb2997982201ec27 100644
|
||||
--- a/browser/components/sessionstore/SessionStore.sys.mjs
|
||||
+++ b/browser/components/sessionstore/SessionStore.sys.mjs
|
||||
@@ -127,6 +127,8 @@ const TAB_EVENTS = [
|
||||
@@ -177,7 +177,7 @@ index 2c2f43bf743ef458b378e85e9ed44a971711e1d9..4439fe5fb3c7002b173415b615892ef3
|
||||
|
||||
+ winData.folders = aWindow.gZenFolders?.storeDataForSessionStore() || [];
|
||||
+ winData.activeZenSpace = aWindow.gZenWorkspaces?.activeWorkspace || null;
|
||||
+ winData.spaces = aWindow.gZenWorkspaces?.getWorkspaces();
|
||||
+ winData.spaces = aWindow.gZenWorkspaces?.getWorkspacesForSessionStore();
|
||||
// update tab group state for this window
|
||||
winData.groups = [];
|
||||
for (let tabGroup of aWindow.gBrowser.tabGroups) {
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
diff --git a/browser/components/tabbrowser/content/tab.js b/browser/components/tabbrowser/content/tab.js
|
||||
index 2dacb325190b6ae42ebeb3e9f0e862dc690ecdca..23b134a8ba674978182415a8bac926f7600f564a 100644
|
||||
index 2dacb325190b6ae42ebeb3e9f0e862dc690ecdca..160e277d64eaac8408aed90eaf62606479424001 100644
|
||||
--- a/browser/components/tabbrowser/content/tab.js
|
||||
+++ b/browser/components/tabbrowser/content/tab.js
|
||||
@@ -21,6 +21,7 @@
|
||||
@@ -87,7 +87,7 @@ index 2dacb325190b6ae42ebeb3e9f0e862dc690ecdca..23b134a8ba674978182415a8bac926f7
|
||||
}
|
||||
|
||||
get lastAccessed() {
|
||||
@@ -382,7 +395,12 @@
|
||||
@@ -382,7 +395,18 @@
|
||||
}
|
||||
|
||||
get group() {
|
||||
@@ -97,11 +97,17 @@ index 2dacb325190b6ae42ebeb3e9f0e862dc690ecdca..23b134a8ba674978182415a8bac926f7
|
||||
+ }
|
||||
+ if (gBrowser.isTabGroup(this.parentElement?.parentElement)) {
|
||||
+ return this.parentElement.parentElement;
|
||||
+ }
|
||||
+ if (this.pinned) {
|
||||
+ let collapsiblePins = gZenWorkspaces.workspaceElement(this.getAttribute('zen-workspace-id'))?.collapsiblePins;
|
||||
+ if (collapsiblePins?.collapsed) {
|
||||
+ return collapsiblePins;
|
||||
+ }
|
||||
+ }
|
||||
}
|
||||
|
||||
get splitview() {
|
||||
@@ -473,6 +491,8 @@
|
||||
@@ -473,6 +497,8 @@
|
||||
this.style.MozUserFocus = "ignore";
|
||||
} else if (
|
||||
event.target.classList.contains("tab-close-button") ||
|
||||
@@ -110,7 +116,7 @@ index 2dacb325190b6ae42ebeb3e9f0e862dc690ecdca..23b134a8ba674978182415a8bac926f7
|
||||
event.target.classList.contains("tab-icon-overlay") ||
|
||||
event.target.classList.contains("tab-audio-button")
|
||||
) {
|
||||
@@ -527,6 +547,10 @@
|
||||
@@ -527,6 +553,10 @@
|
||||
this.style.MozUserFocus = "";
|
||||
}
|
||||
|
||||
@@ -121,7 +127,7 @@ index 2dacb325190b6ae42ebeb3e9f0e862dc690ecdca..23b134a8ba674978182415a8bac926f7
|
||||
on_click(event) {
|
||||
if (event.button != 0) {
|
||||
return;
|
||||
@@ -587,6 +611,14 @@
|
||||
@@ -587,6 +617,14 @@
|
||||
// (see tabbrowser-tabs 'click' handler).
|
||||
gBrowser.tabContainer._blockDblClick = true;
|
||||
}
|
||||
@@ -136,7 +142,7 @@ index 2dacb325190b6ae42ebeb3e9f0e862dc690ecdca..23b134a8ba674978182415a8bac926f7
|
||||
}
|
||||
|
||||
on_dblclick(event) {
|
||||
@@ -610,6 +642,8 @@
|
||||
@@ -610,6 +648,8 @@
|
||||
animate: true,
|
||||
triggeringEvent: event,
|
||||
});
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
diff --git a/browser/components/tabbrowser/content/tabgroup.js b/browser/components/tabbrowser/content/tabgroup.js
|
||||
index 394b2af2e187b82bb3e98ebcdc6e66b63036e20d..4757555c7654a14578a5d057323057ebc71c2f5f 100644
|
||||
index 394b2af2e187b82bb3e98ebcdc6e66b63036e20d..e92927612abf12631c384a8f54b6a607fb699424 100644
|
||||
--- a/browser/components/tabbrowser/content/tabgroup.js
|
||||
+++ b/browser/components/tabbrowser/content/tabgroup.js
|
||||
@@ -14,11 +14,11 @@
|
||||
@@ -68,10 +68,10 @@ index 394b2af2e187b82bb3e98ebcdc6e66b63036e20d..4757555c7654a14578a5d057323057eb
|
||||
- return false;
|
||||
- });
|
||||
+ this.appendChild = function (child) {
|
||||
+ this.querySelector(".tab-group-container").appendChild(child);
|
||||
+ this.groupContainer.appendChild(child);
|
||||
+ for (let tab of this.tabs) {
|
||||
+ if (tab.hasAttribute("zen-empty-tab") && tab.group === this) {
|
||||
+ this.querySelector(".zen-tab-group-start").after(tab);
|
||||
+ this.groupStartElement.after(tab);
|
||||
+ }
|
||||
+ }
|
||||
+ };
|
||||
@@ -92,7 +92,7 @@ index 394b2af2e187b82bb3e98ebcdc6e66b63036e20d..4757555c7654a14578a5d057323057eb
|
||||
});
|
||||
}
|
||||
- this.#tabChangeObserver.observe(this, { childList: true });
|
||||
+ const container = this.querySelector(".tab-group-container");
|
||||
+ const container = this.groupContainer;
|
||||
+ if (container) {
|
||||
+ this.#tabChangeObserver.observe(container, { childList: true });
|
||||
+ }
|
||||
@@ -117,7 +117,7 @@ index 394b2af2e187b82bb3e98ebcdc6e66b63036e20d..4757555c7654a14578a5d057323057eb
|
||||
});
|
||||
}
|
||||
|
||||
@@ -466,13 +492,57 @@
|
||||
@@ -466,13 +492,65 @@
|
||||
* @returns {MozTabbrowserTab[]}
|
||||
*/
|
||||
get tabs() {
|
||||
@@ -126,20 +126,29 @@ index 394b2af2e187b82bb3e98ebcdc6e66b63036e20d..4757555c7654a14578a5d057323057eb
|
||||
- if (childrenArray[i].tagName == "tab-split-view-wrapper") {
|
||||
- childrenArray.splice(i, 1, ...childrenArray[i].tabs);
|
||||
+ // add other group tabs if they are under this group
|
||||
+ let childs = Array.from(this.querySelector(".tab-group-container")?.children ?? []);
|
||||
+ let childs = Array.from(this.groupContainer?.children ?? []);
|
||||
+ const tabsCollect = [];
|
||||
+ for (let item of childs) {
|
||||
+ tabsCollect.push(item);
|
||||
+ if (gBrowser.isTabGroup(item)) {
|
||||
+ tabsCollect.push(...item.tabs);
|
||||
+ }
|
||||
+ }
|
||||
}
|
||||
}
|
||||
- return childrenArray.filter(node => node.matches("tab"));
|
||||
+ return tabsCollect.filter(node => node.matches("tab"));
|
||||
+ }
|
||||
+
|
||||
+ get groupContainer() {
|
||||
+ return this.querySelector(".tab-group-container");
|
||||
+ }
|
||||
+
|
||||
+ get groupStartElement() {
|
||||
+ return this.querySelector(".zen-tab-group-start");
|
||||
+ }
|
||||
+
|
||||
+ get childGroupsAndTabs() {
|
||||
+ const result = [];
|
||||
+ const container = this.querySelector(".tab-group-container");
|
||||
+ const container = this.groupContainer;
|
||||
+
|
||||
+ for (const item of Array.from(container.children)) {
|
||||
+ if (gBrowser.isTab(item)) {
|
||||
@@ -169,9 +178,8 @@ index 394b2af2e187b82bb3e98ebcdc6e66b63036e20d..4757555c7654a14578a5d057323057eb
|
||||
+ currentGroup = currentGroup?.group;
|
||||
+ if (currentGroup.collapsed) {
|
||||
+ return false;
|
||||
}
|
||||
}
|
||||
- return childrenArray.filter(node => node.matches("tab"));
|
||||
+ }
|
||||
+ }
|
||||
+ return true;
|
||||
+ }
|
||||
+
|
||||
@@ -180,7 +188,7 @@ index 394b2af2e187b82bb3e98ebcdc6e66b63036e20d..4757555c7654a14578a5d057323057eb
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -553,7 +623,6 @@
|
||||
@@ -553,7 +631,6 @@
|
||||
addTabs(tabs, metricsContext) {
|
||||
for (let tab of tabs) {
|
||||
if (tab.pinned) {
|
||||
@@ -188,7 +196,7 @@ index 394b2af2e187b82bb3e98ebcdc6e66b63036e20d..4757555c7654a14578a5d057323057eb
|
||||
}
|
||||
let tabToMove =
|
||||
this.ownerGlobal === tab.ownerGlobal
|
||||
@@ -616,7 +685,7 @@
|
||||
@@ -616,7 +693,7 @@
|
||||
*/
|
||||
on_click(event) {
|
||||
let isToggleElement =
|
||||
@@ -197,7 +205,7 @@ index 394b2af2e187b82bb3e98ebcdc6e66b63036e20d..4757555c7654a14578a5d057323057eb
|
||||
event.target === this.#overflowCountLabel;
|
||||
if (isToggleElement && event.button === 0) {
|
||||
event.preventDefault();
|
||||
@@ -687,5 +756,6 @@
|
||||
@@ -687,5 +764,6 @@
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -63,7 +63,7 @@ index 6b6c04599fe80983d13d2069ca62b99d8ad70271..6d5ae983446bc778f3075d79f8ff1474
|
||||
return this.hasAttribute("overflow");
|
||||
}
|
||||
|
||||
@@ -837,29 +839,54 @@
|
||||
@@ -837,29 +839,56 @@
|
||||
if (pinnedChildren?.at(-1)?.id == "pinned-tabs-container-periphery") {
|
||||
pinnedChildren.pop();
|
||||
}
|
||||
@@ -90,6 +90,8 @@ index 6b6c04599fe80983d13d2069ca62b99d8ad70271..6d5ae983446bc778f3075d79f8ff1474
|
||||
+ tabs.splice(i, 1);
|
||||
+ // add the tabs in the group to the list
|
||||
+ tabs.splice(i, 0, ...tab.tabs);
|
||||
+ } else if (tab.classList.contains("zen-tab-group-start")) {
|
||||
+ tabs.splice(i, 1);
|
||||
+ }
|
||||
+ }
|
||||
+ };
|
||||
@@ -128,7 +130,7 @@ index 6b6c04599fe80983d13d2069ca62b99d8ad70271..6d5ae983446bc778f3075d79f8ff1474
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -926,17 +953,10 @@
|
||||
@@ -926,17 +955,10 @@
|
||||
|
||||
let elementIndex = 0;
|
||||
|
||||
@@ -148,7 +150,7 @@ index 6b6c04599fe80983d13d2069ca62b99d8ad70271..6d5ae983446bc778f3075d79f8ff1474
|
||||
if (isTab(child) && child.visible) {
|
||||
child.elementIndex = elementIndex++;
|
||||
focusableItems.push(child);
|
||||
@@ -944,11 +964,13 @@
|
||||
@@ -944,11 +966,13 @@
|
||||
child.labelElement.elementIndex = elementIndex++;
|
||||
focusableItems.push(child.labelElement);
|
||||
|
||||
@@ -163,7 +165,7 @@ index 6b6c04599fe80983d13d2069ca62b99d8ad70271..6d5ae983446bc778f3075d79f8ff1474
|
||||
} else if (child.tagName == "tab-split-view-wrapper") {
|
||||
let visibleTabsInSplitView = child.tabs.filter(tab => tab.visible);
|
||||
visibleTabsInSplitView.forEach(tab => {
|
||||
@@ -992,6 +1014,7 @@
|
||||
@@ -992,6 +1016,7 @@
|
||||
_invalidateCachedTabs() {
|
||||
this.#allTabs = null;
|
||||
this._invalidateCachedVisibleTabs();
|
||||
@@ -171,7 +173,7 @@ index 6b6c04599fe80983d13d2069ca62b99d8ad70271..6d5ae983446bc778f3075d79f8ff1474
|
||||
}
|
||||
|
||||
_invalidateCachedVisibleTabs() {
|
||||
@@ -1095,7 +1118,7 @@
|
||||
@@ -1095,7 +1120,7 @@
|
||||
|
||||
if (node == null) {
|
||||
// We have a container for non-tab elements at the end of the scrollbox.
|
||||
@@ -180,7 +182,7 @@ index 6b6c04599fe80983d13d2069ca62b99d8ad70271..6d5ae983446bc778f3075d79f8ff1474
|
||||
}
|
||||
|
||||
node.before(tab);
|
||||
@@ -1193,7 +1216,7 @@
|
||||
@@ -1193,7 +1218,7 @@
|
||||
// There are separate "new tab" buttons for horizontal tabs toolbar, vertical tabs and
|
||||
// for when the tab strip is overflowed (which is shared by vertical and horizontal tabs);
|
||||
// Attach the long click popup to all of them.
|
||||
@@ -189,7 +191,7 @@ index 6b6c04599fe80983d13d2069ca62b99d8ad70271..6d5ae983446bc778f3075d79f8ff1474
|
||||
const newTab2 = this.newTabButton;
|
||||
const newTabVertical = document.getElementById(
|
||||
"vertical-tabs-newtab-button"
|
||||
@@ -1294,8 +1317,10 @@
|
||||
@@ -1294,8 +1319,10 @@
|
||||
*/
|
||||
_handleTabSelect(aInstant) {
|
||||
let selectedTab = this.selectedItem;
|
||||
@@ -200,7 +202,7 @@ index 6b6c04599fe80983d13d2069ca62b99d8ad70271..6d5ae983446bc778f3075d79f8ff1474
|
||||
selectedTab._notselectedsinceload = false;
|
||||
}
|
||||
|
||||
@@ -1304,7 +1329,7 @@
|
||||
@@ -1304,7 +1331,7 @@
|
||||
* @param {boolean} [shouldScrollInstantly=false]
|
||||
*/
|
||||
#ensureTabIsVisible(tab, shouldScrollInstantly = false) {
|
||||
@@ -209,7 +211,7 @@ index 6b6c04599fe80983d13d2069ca62b99d8ad70271..6d5ae983446bc778f3075d79f8ff1474
|
||||
if (arrowScrollbox?.overflowing) {
|
||||
arrowScrollbox.ensureElementIsVisible(tab, shouldScrollInstantly);
|
||||
}
|
||||
@@ -1437,7 +1462,7 @@
|
||||
@@ -1437,7 +1464,7 @@
|
||||
}
|
||||
|
||||
_notifyBackgroundTab(aTab) {
|
||||
|
||||
Reference in New Issue
Block a user