Skip to content

Commit 9e6cafa

Browse files
committed
fix: Fixed restoring folders when session restore is disabled, b=no-bug, c=tabs, folders
1 parent 91cedcf commit 9e6cafa

File tree

3 files changed

+27
-13
lines changed

3 files changed

+27
-13
lines changed

src/browser/components/tabbrowser/content/tabs-js.patch

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
diff --git a/browser/components/tabbrowser/content/tabs.js b/browser/components/tabbrowser/content/tabs.js
2-
index 1fcebe3962398ff1b7cadef657ac8b68a80e720d..ddb0735916c1cd29f316b2e66a95c765a933362d 100644
2+
index 1fcebe3962398ff1b7cadef657ac8b68a80e720d..1cd2e9f24b3be1717493b4e663bc41d784cc9da0 100644
33
--- a/browser/components/tabbrowser/content/tabs.js
44
+++ b/browser/components/tabbrowser/content/tabs.js
55
@@ -289,6 +289,7 @@
@@ -435,7 +435,7 @@ index 1fcebe3962398ff1b7cadef657ac8b68a80e720d..ddb0735916c1cd29f316b2e66a95c765
435435

436436
let dropElement = getOverlappedElement();
437437
+ if (dropElement?.hasAttribute("split-view-group")) dropElement = dropElement.labelElement;
438-
+ gZenPinnedTabManager.animateSeparatorMove(draggedTab, dropElement, isPinned, event);
438+
+ gZenPinnedTabManager.animateSeparatorMove(movingTabs, dropElement, isPinned, event);
439439

440440
let newDropElementIndex;
441441
if (dropElement) {

src/zen/folders/zen-folders.css

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,12 @@ tab-group[split-view-group] {
1717
transparent 40%
1818
);
1919

20+
margin-inline-start: var(--zen-folder-indent) !important;
21+
22+
#tabbrowser-tabs[movingtab] & {
23+
transition: margin-inline-start 0.15s ease-in-out;
24+
}
25+
2026
& .tab-group-container {
2127
display: flex;
2228
flex-wrap: nowrap;
@@ -48,6 +54,7 @@ tab-group[split-view-group] {
4854
--tab-selected-shadow: none;
4955
--border-radius-medium: var(--tab-border-radius);
5056
--zen-active-tab-scale: 1;
57+
--zen-folder-indent: 0 !important;
5158

5259
:root[zen-sidebar-expanded='true'] & {
5360
--tab-min-height: 28px;
@@ -94,7 +101,6 @@ tab-group[split-view-group] {
94101

95102
& > .tabbrowser-tab {
96103
--tab-hover-background-color: var(--zen-split-view-active-tab-bg);
97-
--zen-folder-indent: 0 !important;
98104
& .tab-background {
99105
background-color: var(--zen-split-view-active-tab-bg) !important;
100106
}

src/zen/tabs/ZenPinnedTabManager.mjs

Lines changed: 18 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -254,7 +254,15 @@
254254
}
255255

256256
if (pin.isGroup) {
257-
const group = gZenFolders.createFolder([], {
257+
const tabs = [];
258+
// If there's already existing tabs, let's use them
259+
for (const [uuid, existingTab] of pinnedTabsByUUID) {
260+
const pinObject = this._pinsCache.find((p) => p.uuid === uuid);
261+
if (pinObject && pinObject.parentUuid === pin.uuid) {
262+
tabs.push(existingTab);
263+
}
264+
}
265+
const group = gZenFolders.createFolder(tabs, {
258266
label: pin.title,
259267
collapsed: pin.isFolderCollapsed,
260268
initialPinId: pin.uuid,
@@ -981,13 +989,9 @@
981989
}
982990
movingTabs = [...movingTabs];
983991
try {
984-
const pinnedTabsTarget =
985-
event.target.closest('.zen-workspace-pinned-tabs-section') ||
986-
event.target.closest('.zen-current-workspace-indicator') ||
987-
this._isGoingToPinnedTabs;
992+
const pinnedTabsTarget = this._isGoingToPinnedTabs;
988993
const essentialTabsTarget = event.target.closest('.zen-essentials-container');
989-
const tabsTarget =
990-
event.target.closest('.zen-workspace-normal-tabs-section') || !this._isGoingToPinnedTabs;
994+
const tabsTarget = !this._isGoingToPinnedTabs;
991995

992996
// TODO: Solve the issue of adding a tab between two groups
993997
// Remove group labels from the moving tabs and replace it
@@ -1158,7 +1162,8 @@
11581162
continue;
11591163
}
11601164
}
1161-
item.style.removeProperty('--zen-folder-indent');
1165+
const itemToAnimate = item.group?.hasAttribute('split-view-group') ? item.group : item;
1166+
itemToAnimate.style.removeProperty('--zen-folder-indent');
11621167
}
11631168
this.removeTabContainersDragoverClass();
11641169
}
@@ -1173,7 +1178,8 @@
11731178
: [separator];
11741179
}
11751180

1176-
animateSeparatorMove(draggedTab, dropElement, isPinned, event) {
1181+
animateSeparatorMove(movingTabs, dropElement, isPinned, event) {
1182+
let draggedTab = movingTabs[0];
11771183
if (gBrowser.isTabGroupLabel(draggedTab) && draggedTab.group.isZenFolder) {
11781184
return;
11791185
}
@@ -1182,7 +1188,9 @@
11821188
}
11831189
const itemsToCheck = this.dragShiftableItems;
11841190
const translate = event.screenY;
1185-
const draggingTabHeight = window.windowUtils.getBoundsWithoutFlushing(draggedTab).height;
1191+
const draggingTabHeight = movingTabs.reduce((acc, item) => {
1192+
return acc + window.windowUtils.getBoundsWithoutFlushing(item).height;
1193+
}, 0);
11861194
let topToNormalTabs = itemsToCheck[0].screenY;
11871195
if (!isPinned) {
11881196
topToNormalTabs += draggedTab.getBoundingClientRect().height;

0 commit comments

Comments
 (0)