fix: Remove overflow: hidden from tabs container (#9923)

This commit is contained in:
octaviusz
2025-08-18 20:26:01 +03:00
committed by GitHub
parent 6e161ac83e
commit f95f245644
2 changed files with 39 additions and 23 deletions

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 e47f735e4e4563c9b7537944628418d1478c068d..6c26b1ff42c386db52d743cdf0b53ef622eef930 100644 index e47f735e4e4563c9b7537944628418d1478c068d..8af76f08278e5db4029bf060bbf4ea4c82929be7 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
@@ -332,7 +332,7 @@ @@ -332,7 +332,7 @@
@@ -28,14 +28,15 @@ index e47f735e4e4563c9b7537944628418d1478c068d..6c26b1ff42c386db52d743cdf0b53ef6
let tabsPerRow = 0; let tabsPerRow = 0;
let position = RTL_UI let position = RTL_UI
? window.windowUtils.getBoundsWithoutFlushing( ? window.windowUtils.getBoundsWithoutFlushing(
@@ -773,8 +772,9 @@ @@ -772,9 +771,10 @@
if (tab.multiselected) { if (tab.multiselected) {
this.#moveTogetherSelectedTabs(tab); this.#moveTogetherSelectedTabs(tab);
} else if (isTabGroupLabel(tab) && !tab.group.collapsed) { - } else if (isTabGroupLabel(tab) && !tab.group.collapsed) {
- tab.group.collapsed = true; - tab.group.collapsed = true;
- expandGroupOnDrop = true; + } else if (isTabGroupLabel(tab) && (!tab.group.collapsed || tab.group.hasAttribute("has-active"))) {
+ tab.group.collapsed = !tab.group.hasAttribute("split-view-group"); + tab.group.collapsed = !tab.group.hasAttribute("split-view-group");
+ expandGroupOnDrop = !tab.group.collapsed || tab.group.hasAttribute("has-active"); expandGroupOnDrop = true;
+ gZenFolders.collapseVisibleTab(tab.group); + gZenFolders.collapseVisibleTab(tab.group);
} }
} }
@@ -472,7 +473,7 @@ index e47f735e4e4563c9b7537944628418d1478c068d..6c26b1ff42c386db52d743cdf0b53ef6
if (dropElement) { if (dropElement) {
- let dropElementForOverlap = isTabGroupLabel(dropElement) - let dropElementForOverlap = isTabGroupLabel(dropElement)
+ if (dropElement?.group?.hasAttribute("split-view-group") || dropElement.hasAttribute("split-view-group")) { + if (dropElement?.group?.hasAttribute("split-view-group") || dropElement.hasAttribute("split-view-group")) {
+ dropElement = dropElement.group.labelElement; + dropElement = dropElement.group.labelElement ?? dropElement.labelElement;
+ } + }
+ let dropElementForOverlap = isTabGroupLabel(dropElement) && !dropElement.group?.hasAttribute("split-view-group") + let dropElementForOverlap = isTabGroupLabel(dropElement) && !dropElement.group?.hasAttribute("split-view-group")
? dropElement.parentElement ? dropElement.parentElement
@@ -645,7 +646,15 @@ index e47f735e4e4563c9b7537944628418d1478c068d..6c26b1ff42c386db52d743cdf0b53ef6
item.removeAttribute("dragover-createGroup"); item.removeAttribute("dragover-createGroup");
} }
this.removeAttribute("movingtab-createGroup"); this.removeAttribute("movingtab-createGroup");
@@ -3198,7 +3270,7 @@ @@ -3122,7 +3194,6 @@
"tab-group-label-container"
)) {
label.style.width = "";
- label.style.height = "";
label.style.left = "";
label.style.top = "";
label.removeAttribute("dragtarget");
@@ -3198,7 +3269,7 @@
let postTransitionCleanup = () => { let postTransitionCleanup = () => {
movingTab._moveTogetherSelectedTabsData.animate = false; movingTab._moveTogetherSelectedTabsData.animate = false;
}; };
@@ -654,7 +663,7 @@ index e47f735e4e4563c9b7537944628418d1478c068d..6c26b1ff42c386db52d743cdf0b53ef6
postTransitionCleanup(); postTransitionCleanup();
} else { } else {
let onTransitionEnd = transitionendEvent => { let onTransitionEnd = transitionendEvent => {
@@ -3371,7 +3443,7 @@ @@ -3371,7 +3442,7 @@
} }
_notifyBackgroundTab(aTab) { _notifyBackgroundTab(aTab) {
@@ -663,7 +672,7 @@ index e47f735e4e4563c9b7537944628418d1478c068d..6c26b1ff42c386db52d743cdf0b53ef6
return; return;
} }
@@ -3480,7 +3552,10 @@ @@ -3480,7 +3551,10 @@
#getDragTarget(event, { ignoreSides = false } = {}) { #getDragTarget(event, { ignoreSides = false } = {}) {
let { target } = event; let { target } = event;
while (target) { while (target) {
@@ -675,7 +684,7 @@ index e47f735e4e4563c9b7537944628418d1478c068d..6c26b1ff42c386db52d743cdf0b53ef6
break; break;
} }
target = target.parentNode; target = target.parentNode;
@@ -3497,6 +3572,9 @@ @@ -3497,6 +3571,9 @@
return null; return null;
} }
} }

View File

@@ -466,24 +466,31 @@
animations.push(...this.updateFolderIcon(group)); animations.push(...this.updateFolderIcon(group));
animations.push( animations.push(
gZenUIManager.motion.animate( gZenUIManager.motion
groupStart, .animate(
{ groupStart,
marginTop: 0, {
}, marginTop: 0,
{ },
duration: 0.15, {
ease: 'linear', duration: 0.15,
} ease: 'linear',
) }
)
.then(() => {
tabsContainer.style.overflow = '';
})
); );
await Promise.all(animations); await Promise.all(animations);
tabsContainer.style.overflow = ''; groupItems.forEach((item) => {
groupItems.map((item) => {
// Cleanup just in case // Cleanup just in case
item.style.opacity = ''; item.style.opacity = '';
item.style.height = ''; item.style.height = '';
}); });
itemsToHide.forEach((item) => {
item.style.opacity = '';
item.style.height = '';
});
} }
#onNewFolder(event) { #onNewFolder(event) {
@@ -1014,7 +1021,7 @@
let itemHeight = 0; let itemHeight = 0;
for (const item of group.allItems) { for (const item of group.allItems) {
itemHeight += item.getBoundingClientRect().height; itemHeight += item.getBoundingClientRect().height;
if (item.hasAttribute('folder-active')) { if (item.hasAttribute('folder-active') && !item.selected) {
item.removeAttribute('folder-active'); item.removeAttribute('folder-active');
if (!onlyIfActive) { if (!onlyIfActive) {
item.setAttribute('was-folder-active', 'true'); item.setAttribute('was-folder-active', 'true');