chore: Updated to firefox 141.0.3, b=no-bug, c=tabs, folders

This commit is contained in:
Mr. M
2025-08-08 13:27:08 +02:00
parent d51d698036
commit 62fb85ded9
7 changed files with 88 additions and 57 deletions

View File

@@ -30,7 +30,7 @@ Zen is a firefox-based browser with the aim of pushing your productivity to a ne
### Firefox Versions ### Firefox Versions
- [`Release`](https://zen-browser.app/download) - Is currently built using Firefox version `141.0.2`! 🚀 - [`Release`](https://zen-browser.app/download) - Is currently built using Firefox version `141.0.2`! 🚀
- [`Twilight`](https://zen-browser.app/download?twilight) - Is currently built using Firefox version `RC 141.0.2`! - [`Twilight`](https://zen-browser.app/download?twilight) - Is currently built using Firefox version `RC 141.0.3`!
### Contributing ### Contributing

View File

@@ -1,5 +1,5 @@
diff --git a/browser/components/tabbrowser/content/tabs.js b/browser/components/tabbrowser/content/tabs.js diff --git a/browser/components/tabbrowser/content/tabs.js b/browser/components/tabbrowser/content/tabs.js
index 1fcebe3962398ff1b7cadef657ac8b68a80e720d..9022f3f566e8829fa8d3c5a58f0300ab96869073 100644 index 1fcebe3962398ff1b7cadef657ac8b68a80e720d..49cb1c803b3b4384d948103f6352058e543081de 100644
--- a/browser/components/tabbrowser/content/tabs.js --- a/browser/components/tabbrowser/content/tabs.js
+++ b/browser/components/tabbrowser/content/tabs.js +++ b/browser/components/tabbrowser/content/tabs.js
@@ -289,6 +289,7 @@ @@ -289,6 +289,7 @@
@@ -548,7 +548,12 @@ index 1fcebe3962398ff1b7cadef657ac8b68a80e720d..9022f3f566e8829fa8d3c5a58f0300ab
} }
this.#setDragOverGroupColor(colorCode); this.#setDragOverGroupColor(colorCode);
this.toggleAttribute("movingtab-ungroup", !colorCode); this.toggleAttribute("movingtab-ungroup", !colorCode);
@@ -2769,15 +2817,24 @@ @@ -2765,19 +2813,28 @@
dragData.dropElement = dropElement;
dragData.dropBefore = dropBefore;
dragData.animDropElementIndex = newDropElementIndex;
-
+ gZenFolders.setFolderIndentation(draggedTab, dropElement);
// Shift background tabs to leave a gap where the dragged tab // Shift background tabs to leave a gap where the dragged tab
// would currently be dropped. // would currently be dropped.
for (let item of tabs) { for (let item of tabs) {

View File

@@ -318,6 +318,7 @@
if (selectedItem) { if (selectedItem) {
group.setAttribute('has-active', 'true'); group.setAttribute('has-active', 'true');
selectedItem.setAttribute('folder-active', 'true'); selectedItem.setAttribute('folder-active', 'true');
this.setFolderIndentation(selectedItem, group, false);
} }
for (const item of itemsAfterSelected) { for (const item of itemsAfterSelected) {
@@ -380,6 +381,21 @@
item = item.parentNode; item = item.parentNode;
} }
} }
// If all the groups above the item are visible, remove the indentation
if (gBrowser.isTab(item)) {
let isVisible = true;
let parent = item.group;
while (parent) {
if (parent.collapsed && !parent.hasAttribute('has-active')) {
isVisible = false;
break;
}
parent = parent.group;
}
if (isVisible) {
item.style.removeProperty('--zen-folder-indent');
}
}
groupItems.push(item); groupItems.push(item);
}); });
@@ -858,14 +874,23 @@
return []; return [];
} }
getFolderIndentation(tab, group = undefined) { setFolderIndentation(tab, group = undefined, dropBefore = false) {
const level = group?.level || 0; if (!gZenPinnedTabManager.expandedSidebarMode) {
const baseSpacing = 4; // Base spacing for each level return;
}
let isTab = false;
if (!group && tab?.group) {
group = tab; // So we can set isTab later
}
if (gBrowser.isTab(group)) {
group = group.group;
isTab = true;
}
const level = group?.level + 1 - (dropBefore && !isTab ? 1 : 0) || 0;
const baseSpacing = 14; // Base spacing for each level
const tabLevel = tab?.group?.level || 0; const tabLevel = tab?.group?.level || 0;
// If the level is less, we need to make a negative margin const spacing = (level - tabLevel) * baseSpacing;
const spacing = tab.style.setProperty('--zen-folder-indent', `${spacing}px`);
level > tabLevel ? -baseSpacing * (level - tabLevel) : baseSpacing * (tabLevel - level);
return spacing;
} }
changeFolderUserIcon(group) { changeFolderUserIcon(group) {

View File

@@ -166,14 +166,6 @@ tab-group[split-view-group] .tab-group-line {
display: none !important; display: none !important;
} }
#tabbrowser-tabs[orient='vertical'][expanded] {
tab-group > :is(.tab-group-label-container, .tabbrowser-tab),
&[movingtab][movingtab-addToGroup]:not([movingtab-createGroup], [movingtab-ungroup])
.tabbrowser-tab:is(:active, [multiselected]) {
margin-inline-start: 0;
}
}
zen-folder { zen-folder {
display: flex; display: flex;
flex-direction: column; flex-direction: column;
@@ -191,6 +183,7 @@ zen-folder {
); );
-moz-window-dragging: no-drag; -moz-window-dragging: no-drag;
transition: margin-inline-start 0.15s ease-in-out;
&[selected] > .tab-group-label-container::before { &[selected] > .tab-group-label-container::before {
background-color: color-mix(in srgb, var(--zen-colors-border) 60%, transparent); background-color: color-mix(in srgb, var(--zen-colors-border) 60%, transparent);
@@ -215,7 +208,8 @@ zen-folder {
& > .tab-group-container { & > .tab-group-container {
:root[zen-sidebar-expanded] & > * { :root[zen-sidebar-expanded] & > * {
margin-inline-start: var(--zen-folder-indent, 14px) !important; --zen-folder-indent: 14px; /* Can get overriden by the JS */
margin-inline-start: var(--zen-folder-indent) !important;
} }
& > zen-folder { & > zen-folder {
@@ -227,10 +221,6 @@ zen-folder {
} }
} }
&[collapsed][has-active='true'] > .tab-group-container zen-folder {
margin-inline-start: 0 !important;
}
margin: 0 var(--tab-block-margin); margin: 0 var(--tab-block-margin);
margin-inline-end: 0; margin-inline-end: 0;
@@ -296,6 +286,7 @@ zen-folder {
& > label, & > label,
& > #tab-label-input { & > #tab-label-input {
padding: 0 0 0 30px !important; padding: 0 0 0 30px !important;
width: 100%;
} }
& > label { & > label {

View File

@@ -998,33 +998,27 @@
let hasActuallyMoved; let hasActuallyMoved;
for (const draggedTab of movingTabs) { for (const draggedTab of movingTabs) {
let isRegularTabs = false; let isRegularTabs = false;
// Check for pinned tabs container
if (pinnedTabsTarget) {
if (!draggedTab.pinned) {
gBrowser.pinTab(draggedTab);
moved = true;
} else if (draggedTab.hasAttribute('zen-essential')) {
this.removeEssentials(draggedTab, false);
moved = true;
}
}
// Check for essentials container // Check for essentials container
else if (essentialTabsTarget) { if (essentialTabsTarget) {
if (!draggedTab.hasAttribute('zen-essential') && !draggedTab?.group) { if (!draggedTab.hasAttribute('zen-essential') && !draggedTab?.group) {
moved = true; moved = true;
isVertical = false; isVertical = false;
hasActuallyMoved = this.addToEssentials(draggedTab); hasActuallyMoved = this.addToEssentials(draggedTab);
} }
} }
// Check for pinned tabs container
else if (pinnedTabsTarget) {
if (!draggedTab.pinned) {
gBrowser.pinTab(draggedTab);
} else if (draggedTab.hasAttribute('zen-essential')) {
this.removeEssentials(draggedTab, false);
moved = true;
}
}
// Check for normal tabs container // Check for normal tabs container
else if (tabsTarget || event.target.id === 'zen-tabs-wrapper') { else if (tabsTarget || event.target.id === 'zen-tabs-wrapper') {
if ( if (draggedTab.pinned && !draggedTab.hasAttribute('zen-essential')) {
draggedTab.pinned &&
!draggedTab.hasAttribute('zen-essential') &&
!draggedTab?.group?.isZenFolder
) {
gBrowser.unpinTab(draggedTab); gBrowser.unpinTab(draggedTab);
moved = true;
isRegularTabs = true; isRegularTabs = true;
} else if (draggedTab.hasAttribute('zen-essential')) { } else if (draggedTab.hasAttribute('zen-essential')) {
this.removeEssentials(draggedTab); this.removeEssentials(draggedTab);
@@ -1139,6 +1133,23 @@
for (const item of this.dragShiftableItems) { for (const item of this.dragShiftableItems) {
item.style.transform = ''; item.style.transform = '';
} }
for (const item of gBrowser.tabContainer.ariaFocusableItems) {
if (gBrowser.isTab(item)) {
let isVisible = true;
let parent = item.group;
while (parent) {
if (parent.collapsed && !parent.hasAttribute('has-active')) {
isVisible = false;
break;
}
parent = parent.group;
}
if (!isVisible) {
continue;
}
}
item.style.removeProperty('--zen-folder-indent');
}
this.removeTabContainersDragoverClass(); this.removeTabContainersDragoverClass();
} }
@@ -1157,11 +1168,11 @@
draggedTab = draggedTab.group; draggedTab = draggedTab.group;
} }
const itemsToCheck = this.dragShiftableItems; const itemsToCheck = this.dragShiftableItems;
const separator = itemsToCheck[0]; const separatorHeight = window.windowUtils.getBoundsWithoutFlushing(itemsToCheck[0]).height;
const separatorRect = window.windowUtils.getBoundsWithoutFlushing(separator);
const tabRect = window.windowUtils.getBoundsWithoutFlushing(draggedTab); const tabRect = window.windowUtils.getBoundsWithoutFlushing(draggedTab);
const translate = tabRect.top - tabRect.height / 2 + separatorRect.height / 2; const translate = tabRect.top - tabRect.height / 2;
const topToNormalTabs = separatorRect.top - separatorRect.height / 2; const topToNormalTabs =
window.windowUtils.getBoundsWithoutFlushing(itemsToCheck[0]).top - separatorHeight / 2;
const isGoingToPinnedTabs = translate < topToNormalTabs; const isGoingToPinnedTabs = translate < topToNormalTabs;
const multiplier = isGoingToPinnedTabs !== isPinned ? (isGoingToPinnedTabs ? 1 : -1) : 0; const multiplier = isGoingToPinnedTabs !== isPinned ? (isGoingToPinnedTabs ? 1 : -1) : 0;
const draggingTabHeight = const draggingTabHeight =
@@ -1253,12 +1264,7 @@
if (!this.enabled) { if (!this.enabled) {
return; return;
} }
const folderTarget = event.target.closest('zen-folder');
let isVertical = this.expandedSidebarMode; let isVertical = this.expandedSidebarMode;
//if (isVertical) {
// draggedTab.style.marginInlineStart = `${gZenFolders.getFolderIndentation(draggedTab, folderTarget)}px`;
//}
if ( if (
gBrowser.isTabGroupLabel(draggedTab) && gBrowser.isTabGroupLabel(draggedTab) &&
!draggedTab?.group?.hasAttribute('split-view-group') !draggedTab?.group?.hasAttribute('split-view-group')
@@ -1270,6 +1276,7 @@
const pinnedTabsTarget = event.target.closest('.zen-workspace-pinned-tabs-section'); const pinnedTabsTarget = event.target.closest('.zen-workspace-pinned-tabs-section');
const essentialTabsTarget = event.target.closest('.zen-essentials-container'); const essentialTabsTarget = event.target.closest('.zen-essentials-container');
const tabsTarget = event.target.closest('.zen-workspace-normal-tabs-section'); const tabsTarget = event.target.closest('.zen-workspace-normal-tabs-section');
const folderTarget = event.target.closest('zen-folder');
let targetTab = event.target.closest('.tabbrowser-tab'); let targetTab = event.target.closest('.tabbrowser-tab');
targetTab = targetTab?.group || targetTab; targetTab = targetTab?.group || targetTab;
draggedTab = draggedTab?.group?.hasAttribute('split-view-group') draggedTab = draggedTab?.group?.hasAttribute('split-view-group')
@@ -1290,15 +1297,15 @@
let shouldAddDragOverElement = false; let shouldAddDragOverElement = false;
// Decide whether we should show a dragover class for the given target // Decide whether we should show a dragover class for the given target
if (pinnedTabsTarget) { if (essentialTabsTarget) {
if (draggedTab.hasAttribute('zen-essential')) {
shouldAddDragOverElement = true;
}
} else if (essentialTabsTarget) {
if (!draggedTab.hasAttribute('zen-essential') && this.canEssentialBeAdded(draggedTab)) { if (!draggedTab.hasAttribute('zen-essential') && this.canEssentialBeAdded(draggedTab)) {
shouldAddDragOverElement = true; shouldAddDragOverElement = true;
isVertical = false; isVertical = false;
} }
} else if (pinnedTabsTarget) {
if (draggedTab.hasAttribute('zen-essential')) {
shouldAddDragOverElement = true;
}
} else if (tabsTarget) { } else if (tabsTarget) {
if (draggedTab.hasAttribute('zen-essential')) { if (draggedTab.hasAttribute('zen-essential')) {
shouldAddDragOverElement = true; shouldAddDragOverElement = true;

View File

@@ -297,12 +297,15 @@
Individual Tab Styles (.tabbrowser-tab within #tabbrowser-tabs) Individual Tab Styles (.tabbrowser-tab within #tabbrowser-tabs)
======================================================================== */ ======================================================================== */
& .tabbrowser-tab { & .tabbrowser-tab {
/* Add smooth scaling transition */
&, &,
& .tab-content > image { & .tab-content > image {
transition: scale 0.07s ease; transition:
scale 0.07s ease,
margin-inline-start 0.15s ease-in-out;
} }
margin-inline-start: var(--zen-folder-indent) !important;
/* Hide specific empty tabs (likely placeholders) */ /* Hide specific empty tabs (likely placeholders) */
&[zen-empty-tab] { &[zen-empty-tab] {
display: none; display: none;

View File

@@ -6,7 +6,7 @@
"version": { "version": {
"product": "firefox", "product": "firefox",
"version": "141.0.2", "version": "141.0.2",
"candidate": "141.0.2" "candidate": "141.0.3"
}, },
"buildOptions": { "buildOptions": {
"generateBranding": true "generateBranding": true