Skip to content

Commit d51d698

Browse files
committed
fix: Small fixes to folders, b=no-bug, c=tabs, common, folders
1 parent e7add92 commit d51d698

File tree

4 files changed

+49
-23
lines changed

4 files changed

+49
-23
lines changed

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

Lines changed: 21 additions & 15 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..f8e190aaae14b23bd1a50573f61114a0947aa55a 100644
2+
index 1fcebe3962398ff1b7cadef657ac8b68a80e720d..9022f3f566e8829fa8d3c5a58f0300ab96869073 100644
33
--- a/browser/components/tabbrowser/content/tabs.js
44
+++ b/browser/components/tabbrowser/content/tabs.js
55
@@ -289,6 +289,7 @@
@@ -360,11 +360,11 @@ index 1fcebe3962398ff1b7cadef657ac8b68a80e720d..f8e190aaae14b23bd1a50573f61114a0
360360
+ let isPinned = draggedTab?.group ? draggedTab.group.pinned : draggedTab.pinned;
361361
+ let numPinned = gBrowser._numVisiblePinTabsWithoutCollapsed;
362362
+ let essential = draggedTab.hasAttribute("zen-essential");
363-
+ const isDraggingFolder = isTabGroupLabel(draggedTab) || draggedTab.group?.isZenFolder;
363+
+ const isDraggingFolder = isTabGroupLabel(draggedTab) && draggedTab.group?.isZenFolder;
364364
let tabs = this.ariaFocusableItems.slice(
365365
- isPinned ? 0 : numPinned,
366366
- isPinned ? numPinned : undefined
367-
+ isPinned ? (essential ? 0 : gBrowser._numZenEssentials) : undefined,
367+
+ (isPinned && essential) ? 0 : gBrowser._numZenEssentials,
368368
+ isPinned ? (essential ? gBrowser._numZenEssentials : (isDraggingFolder ? numPinned : undefined)) : undefined
369369
);
370370
+ if (draggedTab.group?.hasAttribute("split-view-group")) {
@@ -457,7 +457,7 @@ index 1fcebe3962398ff1b7cadef657ac8b68a80e720d..f8e190aaae14b23bd1a50573f61114a0
457457
moveOverThreshold = Math.min(1, Math.max(0, moveOverThreshold));
458458
let shouldMoveOver = overlapPercent > moveOverThreshold;
459459
if (logicalForward && shouldMoveOver) {
460-
@@ -2656,23 +2738,6 @@
460+
@@ -2656,44 +2738,21 @@
461461

462462
// If dragging a group over another group, don't make it look like it is
463463
// possible to drop the dragged group inside the other group.
@@ -481,8 +481,14 @@ index 1fcebe3962398ff1b7cadef657ac8b68a80e720d..f8e190aaae14b23bd1a50573f61114a0
481481

482482
// Constrain drop direction at the boundary between pinned and
483483
// unpinned tabs so that they don't mix together.
484-
@@ -2686,14 +2751,13 @@
485-
}
484+
let isOutOfBounds = isPinned
485+
? dropElement.elementIndex >= numPinned
486+
: dropElement.elementIndex < numPinned;
487+
- if (isOutOfBounds) {
488+
- // Drop after last pinned tab
489+
- dropElement = this.ariaFocusableItems[numPinned - 1];
490+
- dropBefore = false;
491+
- }
486492
}
487493

488494
- if (
@@ -501,7 +507,7 @@ index 1fcebe3962398ff1b7cadef657ac8b68a80e720d..f8e190aaae14b23bd1a50573f61114a0
501507
// When dragging tab(s) over an ungrouped tab, signal to the user
502508
// that dropping the tab(s) will create a new tab group.
503509
shouldCreateGroupOnDrop =
504-
@@ -2703,12 +2767,6 @@
510+
@@ -2703,12 +2762,6 @@
505511
overlapPercent > dragOverGroupingThreshold;
506512

507513
if (shouldCreateGroupOnDrop) {
@@ -514,7 +520,7 @@ index 1fcebe3962398ff1b7cadef657ac8b68a80e720d..f8e190aaae14b23bd1a50573f61114a0
514520
} else {
515521
this.removeAttribute("movingtab-createGroup");
516522
document
517-
@@ -2735,19 +2793,14 @@
523+
@@ -2735,19 +2788,14 @@
518524
dropElement = dropElementGroup;
519525
colorCode = undefined;
520526
} else if (isTabGroupLabel(dropElement)) {
@@ -542,7 +548,7 @@ index 1fcebe3962398ff1b7cadef657ac8b68a80e720d..f8e190aaae14b23bd1a50573f61114a0
542548
}
543549
this.#setDragOverGroupColor(colorCode);
544550
this.toggleAttribute("movingtab-ungroup", !colorCode);
545-
@@ -2769,15 +2822,24 @@
551+
@@ -2769,15 +2817,24 @@
546552
// Shift background tabs to leave a gap where the dragged tab
547553
// would currently be dropped.
548554
for (let item of tabs) {
@@ -568,7 +574,7 @@ index 1fcebe3962398ff1b7cadef657ac8b68a80e720d..f8e190aaae14b23bd1a50573f61114a0
568574
}
569575
item.style.transform = transform;
570576
}
571-
@@ -2830,12 +2892,14 @@
577+
@@ -2830,12 +2887,14 @@
572578
);
573579
}
574580

@@ -585,7 +591,7 @@ index 1fcebe3962398ff1b7cadef657ac8b68a80e720d..f8e190aaae14b23bd1a50573f61114a0
585591

586592
for (let item of this.ariaFocusableItems) {
587593
if (isTabGroupLabel(item)) {
588-
@@ -2843,6 +2907,18 @@
594+
@@ -2843,6 +2902,18 @@
589595
item = item.parentElement;
590596
}
591597
item.style.transform = "";
@@ -604,7 +610,7 @@ index 1fcebe3962398ff1b7cadef657ac8b68a80e720d..f8e190aaae14b23bd1a50573f61114a0
604610
item.removeAttribute("dragover-createGroup");
605611
}
606612
this.removeAttribute("movingtab-createGroup");
607-
@@ -2889,7 +2965,7 @@
613+
@@ -2889,7 +2960,7 @@
608614
let postTransitionCleanup = () => {
609615
movingTab._moveTogetherSelectedTabsData.animate = false;
610616
};
@@ -613,7 +619,7 @@ index 1fcebe3962398ff1b7cadef657ac8b68a80e720d..f8e190aaae14b23bd1a50573f61114a0
613619
postTransitionCleanup();
614620
} else {
615621
let onTransitionEnd = transitionendEvent => {
616-
@@ -3062,7 +3138,7 @@
622+
@@ -3062,7 +3133,7 @@
617623
}
618624

619625
_notifyBackgroundTab(aTab) {
@@ -622,7 +628,7 @@ index 1fcebe3962398ff1b7cadef657ac8b68a80e720d..f8e190aaae14b23bd1a50573f61114a0
622628
return;
623629
}
624630

625-
@@ -3171,7 +3247,10 @@
631+
@@ -3171,7 +3242,10 @@
626632
#getDragTarget(event, { ignoreSides = false } = {}) {
627633
let { target } = event;
628634
while (target) {
@@ -634,7 +640,7 @@ index 1fcebe3962398ff1b7cadef657ac8b68a80e720d..f8e190aaae14b23bd1a50573f61114a0
634640
break;
635641
}
636642
target = target.parentNode;
637-
@@ -3188,6 +3267,9 @@
643+
@@ -3188,6 +3262,9 @@
638644
return null;
639645
}
640646
}

src/zen/common/ZenUIManager.mjs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1056,6 +1056,7 @@ var gZenVerticalTabsManager = {
10561056
this._tabEdited = null;
10571057
return;
10581058
}
1059+
gZenFolders.cancelPopupTimer();
10591060
event.stopPropagation?.();
10601061
document.documentElement.setAttribute('zen-renaming-tab', 'true');
10611062
const label = isTab ? this._tabEdited.querySelector('.tab-label-container') : this._tabEdited;

src/zen/folders/ZenFolders.mjs

Lines changed: 20 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -170,7 +170,7 @@
170170
.getElementById('zen-context-menu-new-folder')
171171
.addEventListener('command', this.#onNewFolder.bind(this));
172172
SessionStore.promiseInitialized.then(() => {
173-
gBrowser.tabContainer.addEventListener('dragstart', this.#cancelPopupTimer.bind(this));
173+
gBrowser.tabContainer.addEventListener('dragstart', this.cancelPopupTimer.bind(this));
174174
});
175175
}
176176

@@ -204,6 +204,9 @@
204204
const isActive = group?.activeGroups?.length > 0;
205205
if (isActive) tab.setAttribute('folder-active', true);
206206
if (prevTab.hasAttribute('folder-active')) prevTab.removeAttribute('folder-active');
207+
if (tab.group?.collapsed) {
208+
this.expandToSelected(group);
209+
}
207210
gBrowser.tabContainer._invalidateCachedTabs();
208211
}
209212

@@ -257,7 +260,7 @@
257260
}
258261
}
259262

260-
#cancelPopupTimer() {
263+
cancelPopupTimer() {
261264
if (this.#mouseTimer) {
262265
clearTimeout(this.#mouseTimer);
263266
this.#mouseTimer = null;
@@ -269,7 +272,7 @@
269272
const group = event.target;
270273
if (!group.isZenFolder) return;
271274

272-
this.#cancelPopupTimer();
275+
this.cancelPopupTimer();
273276

274277
const tabsContainer = group.querySelector('.tab-group-container');
275278
const animations = [];
@@ -348,7 +351,7 @@
348351
const group = event.target;
349352
if (!group.isZenFolder) return;
350353

351-
this.#cancelPopupTimer();
354+
this.cancelPopupTimer();
352355

353356
const tabsContainer = group.querySelector('.tab-group-container');
354357
tabsContainer.removeAttribute('hidden');
@@ -632,6 +635,9 @@
632635

633636
openTabsPopup(event) {
634637
event.stopPropagation();
638+
if (document.documentElement.getAttribute('zen-renaming-tab')) {
639+
return;
640+
}
635641

636642
const activeGroup = event.target.parentElement;
637643
if (activeGroup.tabs.filter((tab) => !tab.hasAttribute('zen-empty-tab')).length === 0) {
@@ -777,7 +783,6 @@
777783
group.setAttribute('has-active', 'true');
778784
gBrowser.selectedTab = tab;
779785
this.#popup.hidePopup();
780-
this.expandToSelected(group);
781786
});
782787

783788
tabsList.appendChild(item);
@@ -853,6 +858,16 @@
853858
return [];
854859
}
855860

861+
getFolderIndentation(tab, group = undefined) {
862+
const level = group?.level || 0;
863+
const baseSpacing = 4; // Base spacing for each level
864+
const tabLevel = tab?.group?.level || 0;
865+
// If the level is less, we need to make a negative margin
866+
const spacing =
867+
level > tabLevel ? -baseSpacing * (level - tabLevel) : baseSpacing * (tabLevel - level);
868+
return spacing;
869+
}
870+
856871
changeFolderUserIcon(group) {
857872
if (!group) return;
858873

src/zen/tabs/ZenPinnedTabManager.mjs

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -975,7 +975,7 @@
975975
const pinnedTabsTarget =
976976
event.target.closest('.zen-workspace-pinned-tabs-section') ||
977977
event.target.closest('.zen-current-workspace-indicator') ||
978-
this._pinnedTabsContainer;
978+
this._isGoingToPinnedTabs;
979979
const essentialTabsTarget = event.target.closest('.zen-essentials-container');
980980
const tabsTarget = event.target.closest('.zen-workspace-normal-tabs-section');
981981

@@ -1253,6 +1253,12 @@
12531253
if (!this.enabled) {
12541254
return;
12551255
}
1256+
const folderTarget = event.target.closest('zen-folder');
1257+
let isVertical = this.expandedSidebarMode;
1258+
//if (isVertical) {
1259+
// draggedTab.style.marginInlineStart = `${gZenFolders.getFolderIndentation(draggedTab, folderTarget)}px`;
1260+
//}
1261+
12561262
if (
12571263
gBrowser.isTabGroupLabel(draggedTab) &&
12581264
!draggedTab?.group?.hasAttribute('split-view-group')
@@ -1261,7 +1267,6 @@
12611267
this.removeTabContainersDragoverClass();
12621268
return;
12631269
}
1264-
const folderTarget = event.target.closest('zen-folder');
12651270
const pinnedTabsTarget = event.target.closest('.zen-workspace-pinned-tabs-section');
12661271
const essentialTabsTarget = event.target.closest('.zen-essentials-container');
12671272
const tabsTarget = event.target.closest('.zen-workspace-normal-tabs-section');
@@ -1283,7 +1288,6 @@
12831288
}
12841289

12851290
let shouldAddDragOverElement = false;
1286-
let isVertical = this.expandedSidebarMode;
12871291

12881292
// Decide whether we should show a dragover class for the given target
12891293
if (pinnedTabsTarget) {

0 commit comments

Comments
 (0)