Enhance tab management by updating tab close handling and improving tab drag-and-drop functionality

This commit is contained in:
mr. M
2025-02-02 14:25:05 +01:00
parent b55e0eb1d3
commit 61190233fc
7 changed files with 69 additions and 36 deletions

View File

@@ -1,5 +1,5 @@
diff --git a/browser/components/tabbrowser/content/tabs.js b/browser/components/tabbrowser/content/tabs.js
index 8aeb244ffca9f48661805f5b7d860b5896055562..566fe3b925738589910598d0242931dd680a8d1e 100644
index 8aeb244ffca9f48661805f5b7d860b5896055562..ad28d73fe7cc6eadc4b4724c75d54857a82ff94c 100644
--- a/browser/components/tabbrowser/content/tabs.js
+++ b/browser/components/tabbrowser/content/tabs.js
@@ -94,7 +94,7 @@
@@ -62,15 +62,17 @@ index 8aeb244ffca9f48661805f5b7d860b5896055562..566fe3b925738589910598d0242931dd
if (draggedTab && dropEffect == "copy") {
// copy the dropped tab (wherever it's from)
let newIndex = this._getDropIndex(event);
@@ -1010,7 +1022,7 @@
@@ -1010,8 +1022,8 @@
}
} else {
let pinned = draggedTab.pinned;
- let numPinned = gBrowser.pinnedTabCount;
- let tabs = this.visibleTabs.slice(
+ let numPinned = gBrowser._numVisiblePinTabs;
let tabs = this.visibleTabs.slice(
+ let tabs = this.visibleTabs.filter(tab => !tab.hasAttribute("zen-glance-tab")).slice(
pinned ? 0 : numPinned,
pinned ? numPinned : undefined
);
@@ -1090,7 +1102,7 @@
let postTransitionCleanup = () => {
tab.removeAttribute("tabdrop-samewindow");
@@ -155,6 +157,15 @@ index 8aeb244ffca9f48661805f5b7d860b5896055562..566fe3b925738589910598d0242931dd
selectedTab._notselectedsinceload = false;
}
@@ -1843,7 +1867,7 @@
return;
}
- let tabs = this.visibleTabs;
+ let tabs = this.visibleTabs.filter(tab => !tab.hasAttribute("zen-glance-tab"));
if (!tabs.length) {
return;
}
@@ -1879,7 +1903,7 @@
if (isEndTab && !this._hasTabTempMaxWidth) {
return;
@@ -181,8 +192,9 @@ index 8aeb244ffca9f48661805f5b7d860b5896055562..566fe3b925738589910598d0242931dd
+ let numPinned = gBrowser._numVisiblePinTabs;
- if (gBrowser.pinnedTabCount !== verticalTabsContainer.children.length) {
- let tabs = this.visibleTabs;
+ if (gBrowser.pinnedTabCount !== (verticalTabsContainer.children.length + document.getElementById("zen-essentials-container").children.length)) {
let tabs = this.visibleTabs;
+ let tabs = this.visibleTabs.filter(tab => !tab.hasAttribute("zen-glance-tab"));
for (let i = 0; i < numPinned; i++) {
tabs[i].style.marginInlineStart = "";
- verticalTabsContainer.appendChild(tabs[i]);
@@ -190,11 +202,13 @@ index 8aeb244ffca9f48661805f5b7d860b5896055562..566fe3b925738589910598d0242931dd
}
}
@@ -1993,7 +2017,7 @@
@@ -1992,8 +2016,8 @@
}
_positionPinnedTabs() {
let tabs = this.visibleTabs;
- let tabs = this.visibleTabs;
- let numPinned = gBrowser.pinnedTabCount;
+ let tabs = this.visibleTabs.filter(tab => !tab.hasAttribute("zen-glance-tab"));
+ let numPinned = gBrowser._numVisiblePinTabs;
let absPositionHorizontalTabs =
this.overflowing && tabs.length > numPinned && numPinned > 0;
@@ -204,25 +218,23 @@ index 8aeb244ffca9f48661805f5b7d860b5896055562..566fe3b925738589910598d0242931dd
}
- let tabs = this.visibleTabs.slice(0, gBrowser.pinnedTabCount);
+ let tabs = this.visibleTabs.slice(0, gBrowser._numVisiblePinTabs).filter(tab => !tab.hasAttribute("zen-glance-tab"));
+ let tabs = this.visibleTabs.filter(tab => !tab.hasAttribute("zen-glance-tab")).slice(0, gBrowser._numVisiblePinTabs);
let directionX = screenX > dragData.animLastScreenX;
let directionY = screenY > dragData.animLastScreenY;
@@ -2257,11 +2281,11 @@
@@ -2257,9 +2281,9 @@
}
let pinned = draggedTab.pinned;
- let numPinned = gBrowser.pinnedTabCount;
+ let numPinned = gBrowser._numVisiblePinTabs;
let tabs = this.visibleTabs.slice(
- let tabs = this.visibleTabs.slice(
- pinned ? 0 : numPinned,
+ let numPinned = gBrowser._numVisiblePinTabs;
+ let tabs = this.visibleTabs.filter(tab => !tab.hasAttribute("zen-glance-tab")).slice(
+ pinned ? gBrowser._numZenEssentials : numPinned,
pinned ? numPinned : undefined
- );
+ ).filter(tab => !tab.hasAttribute("zen-glance-tab"));
);
if (this.#rtlMode) {
tabs.reverse();
@@ -2502,8 +2526,9 @@
);
}