fix: Prevent live folder tabs from mixing with other tabs, p=#12528

This commit is contained in:
Andrey Bochkarev
2026-02-26 19:16:44 +03:00
committed by GitHub
parent c9cad08ae7
commit 72a35a5ea5
3 changed files with 16 additions and 4 deletions

View File

@@ -707,7 +707,9 @@
if (
movingTabsSet.has(dropElement) ||
!isTab(draggedTab) ||
draggedTab?.group?.hasAttribute("split-view-group")
draggedTab?.group?.hasAttribute("split-view-group") ||
draggedTab.hasAttribute("zen-live-folder-item-id") ||
dropElement.hasAttribute("zen-live-folder-item-id")
) {
this._clearDragOverSplit();
return;

View File

@@ -400,6 +400,14 @@ class nsZenFolders extends nsZenDOMOperatedFeature {
tabs = [];
}
// Prevent create folder inside Live Folder
const thereIsOneLiveFolderTab = tabs?.some((tab) =>
tab.hasAttribute("zen-live-folder-item-id")
);
if (thereIsOneLiveFolderTab) {
return;
}
const canInsertBefore =
!isFromToolbar &&
!triggerTab.hasAttribute("zen-essential") &&

View File

@@ -318,14 +318,15 @@ class nsZenViewSplitter extends nsZenDOMOperatedFeature {
(this._lastOpenedTab.getAttribute("zen-workspace-id") !==
draggedTab.getAttribute("zen-workspace-id") &&
!this._lastOpenedTab.hasAttribute("zen-essential") &&
!draggedTab.hasAttribute("zen-essential"))
!draggedTab.hasAttribute("zen-essential")) ||
this._lastOpenedTab.hasAttribute("zen-live-folder-item-id")
) {
this._lastOpenedTab = gBrowser.selectedTab;
}
if (!draggedTab || this._canDrop || this._hasAnimated || this.fakeBrowser) {
return;
}
if (draggedTab.splitView) {
if (draggedTab.splitView || draggedTab.hasAttribute("zen-live-folder-item-id")) {
return;
}
const currentView = this._data[this._lastOpenedTab.splitViewValue];
@@ -1296,8 +1297,9 @@ class nsZenViewSplitter extends nsZenDOMOperatedFeature {
const allArePinned = tabs.every((tab) => tab.pinned);
const thereIsOnePinned = tabs.some((tab) => tab.pinned);
const thereIsOneEssential = tabs.some((tab) => tab.hasAttribute("zen-essential"));
const thereIsOneLiveFolder = tabs.some((tab) => tab.hasAttribute("zen-live-folder-item-id"));
if (thereIsOneEssential || (thereIsOnePinned && !allArePinned)) {
if (thereIsOneEssential || (thereIsOnePinned && !allArePinned) || thereIsOneLiveFolder) {
for (let i = 0; i < tabs.length; i++) {
const tab = tabs[i];
if (tab.pinned) {