Skip to content

Commit

Permalink
Started to add support for dragging folders and split view groups
Browse files Browse the repository at this point in the history
  • Loading branch information
mauro-balades committed Feb 27, 2025
1 parent 99ab59f commit 7585514
Show file tree
Hide file tree
Showing 3 changed files with 41 additions and 15 deletions.
2 changes: 1 addition & 1 deletion src/browser/base/content/zen-styles/zen-folders.css
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ tab-group[split-view-group] {
--tab-min-height: 32px;
--tab-selected-bgcolor: var(--zen-toolbar-element-bg);
--tab-selected-shadow: none;
--border-radius-medium: calc(2px + var(--tab-border-radius));
--border-radius-medium: var(--tab-border-radius);
--zen-active-tab-scale: 1;
}

Expand Down
21 changes: 12 additions & 9 deletions src/browser/components/tabbrowser/content/tabbrowser-js.patch
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
diff --git a/browser/components/tabbrowser/content/tabbrowser.js b/browser/components/tabbrowser/content/tabbrowser.js
index 628aa6596627c85efe361fc1ece8fd58f7ee653e..dc1bf702844ab60eb781c12dd59d29e839577cdb 100644
index 628aa6596627c85efe361fc1ece8fd58f7ee653e..36ac8b0623059638ecb3fb1821b272964d0e4aea 100644
--- a/browser/components/tabbrowser/content/tabbrowser.js
+++ b/browser/components/tabbrowser/content/tabbrowser.js
@@ -412,11 +412,50 @@
Expand Down Expand Up @@ -427,7 +427,7 @@ index 628aa6596627c85efe361fc1ece8fd58f7ee653e..dc1bf702844ab60eb781c12dd59d29e8
} else {
aIndex = Math.max(aIndex, this.pinnedTabCount);
}
@@ -5684,8 +5797,8 @@
@@ -5684,9 +5797,11 @@
}

this._handleTabMove(aTab, () => {
Expand All @@ -436,9 +436,12 @@ index 628aa6596627c85efe361fc1ece8fd58f7ee653e..dc1bf702844ab60eb781c12dd59d29e8
+ let neighbor = this.tabs.filter(tab => !tab.hasAttribute("zen-glance-tab"))[aIndex];
+ if (forceStandaloneTab && neighbor.group || (neighbor.group && neighbor.group.hasAttribute("split-view-group"))) {
neighbor = neighbor.group;
+ } else if (aTab.group && aTab.group.hasAttribute("split-view-group")) {
+ aTab = aTab.group;
}
if (neighbor && aIndex >= aTab._tPos) {
@@ -5697,7 +5810,7 @@
neighbor.after(aTab);
@@ -5697,7 +5812,7 @@
}

moveTabToGroup(aTab, aGroup) {
Expand All @@ -447,7 +450,7 @@ index 628aa6596627c85efe361fc1ece8fd58f7ee653e..dc1bf702844ab60eb781c12dd59d29e8
return;
}
if (aTab.group && aTab.group.id === aGroup.id) {
@@ -5721,6 +5834,8 @@
@@ -5721,6 +5836,8 @@

moveActionCallback();

Expand All @@ -456,7 +459,7 @@ index 628aa6596627c85efe361fc1ece8fd58f7ee653e..dc1bf702844ab60eb781c12dd59d29e8
// Clear tabs cache after moving nodes because the order of tabs may have
// changed.
this.tabContainer._invalidateCachedTabs();
@@ -5771,7 +5886,7 @@
@@ -5771,7 +5888,7 @@
createLazyBrowser,
};

Expand All @@ -465,15 +468,15 @@ index 628aa6596627c85efe361fc1ece8fd58f7ee653e..dc1bf702844ab60eb781c12dd59d29e8
if (aIndex < numPinned || (aTab.pinned && aIndex == numPinned)) {
params.pinned = true;
}
@@ -7415,6 +7530,7 @@
@@ -7415,6 +7532,7 @@
aWebProgress.isTopLevel
) {
this.mTab.setAttribute("busy", "true");
+ if (!this.mTab.selected) this.mTab.setAttribute("unread", "true");
gBrowser._tabAttrModified(this.mTab, ["busy"]);
this.mTab._notselectedsinceload = !this.mTab.selected;
}
@@ -8381,7 +8497,7 @@ var TabContextMenu = {
@@ -8381,7 +8499,7 @@ var TabContextMenu = {
);
contextUnpinSelectedTabs.hidden =
!this.contextTab.pinned || !multiselectionContext;
Expand All @@ -482,7 +485,7 @@ index 628aa6596627c85efe361fc1ece8fd58f7ee653e..dc1bf702844ab60eb781c12dd59d29e8
// Move Tab items
let contextMoveTabOptions = document.getElementById(
"context_moveTabOptions"
@@ -8414,7 +8530,7 @@ var TabContextMenu = {
@@ -8414,7 +8532,7 @@ var TabContextMenu = {
let contextMoveTabToStart = document.getElementById("context_moveToStart");
let isFirstTab =
tabsToMove[0] == visibleTabs[0] ||
Expand All @@ -491,7 +494,7 @@ index 628aa6596627c85efe361fc1ece8fd58f7ee653e..dc1bf702844ab60eb781c12dd59d29e8
contextMoveTabToStart.disabled = isFirstTab && allSelectedTabsAdjacent;

document.getElementById("context_openTabInWindow").disabled =
@@ -8647,6 +8763,7 @@ var TabContextMenu = {
@@ -8647,6 +8765,7 @@ var TabContextMenu = {
if (this.contextTab.multiselected) {
gBrowser.removeMultiSelectedTabs();
} else {
Expand Down
33 changes: 28 additions & 5 deletions src/browser/components/tabbrowser/content/tabs-js.patch
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
diff --git a/browser/components/tabbrowser/content/tabs.js b/browser/components/tabbrowser/content/tabs.js
index fa96568d366fd3608f9bd583fa793150bd815c8b..0d4c63aa336172cbee0c4feb7eed42959e7331a1 100644
index fa96568d366fd3608f9bd583fa793150bd815c8b..5e25d78b04675fbb736192fb0bbcbf6067cbc257 100644
--- a/browser/components/tabbrowser/content/tabs.js
+++ b/browser/components/tabbrowser/content/tabs.js
@@ -94,7 +94,7 @@
Expand Down Expand Up @@ -361,7 +361,22 @@ index fa96568d366fd3608f9bd583fa793150bd815c8b..0d4c63aa336172cbee0c4feb7eed4295
);

if (this.#rtlMode) {
@@ -2541,8 +2579,9 @@
@@ -2347,8 +2385,12 @@
(lastMovingTabScreen + tabSize);
translate = Math.min(Math.max(translate, firstBound), lastBound);

- for (let tab of movingTabs) {
- tab.style.transform = `${translateAxis}(${translate}px)`;
+ if (draggedTab.group?.hasAttribute("split-view-group")) {
+ draggedTab.group.style.transform = `${translateAxis}(${translate}px)`;
+ } else {
+ for (let tab of movingTabs) {
+ tab.style.transform = `${translateAxis}(${translate}px)`;
+ }
}

dragData.translatePos = translate;
@@ -2541,8 +2583,9 @@
);
}

Expand All @@ -373,7 +388,15 @@ index fa96568d366fd3608f9bd583fa793150bd815c8b..0d4c63aa336172cbee0c4feb7eed4295
return;
}

@@ -2604,7 +2643,7 @@
@@ -2553,6 +2596,7 @@
tab.style.transform = "";
if (tab.group) {
tab.group.style.removeProperty("--tabgroup-dragover-transform");
+ tab.group.style.transform = "";
}
tab.removeAttribute("dragover-createGroup");
}
@@ -2604,7 +2648,7 @@
movingTab._moveTogetherSelectedTabsData.newIndex = movingTabNewIndex;
movingTab._moveTogetherSelectedTabsData.animate = false;
};
Expand All @@ -382,7 +405,7 @@ index fa96568d366fd3608f9bd583fa793150bd815c8b..0d4c63aa336172cbee0c4feb7eed4295
postTransitionCleanup();
} else {
let onTransitionEnd = transitionendEvent => {
@@ -2707,9 +2746,9 @@
@@ -2707,9 +2751,9 @@
function newIndex(aTab, index) {
// Don't allow mixing pinned and unpinned tabs.
if (aTab.pinned) {
Expand All @@ -394,7 +417,7 @@ index fa96568d366fd3608f9bd583fa793150bd815c8b..0d4c63aa336172cbee0c4feb7eed4295
}
}

@@ -2793,7 +2832,7 @@
@@ -2793,7 +2837,7 @@
}

_notifyBackgroundTab(aTab) {
Expand Down

0 comments on commit 7585514

Please sign in to comment.