mirror of
https://github.com/zen-browser/desktop.git
synced 2025-09-05 19:08:18 +00:00
Merge branch 'dev' of https://github.com/zen-browser/desktop into dev
This commit is contained in:
4
.github/workflows/linux-release-build.yml
vendored
4
.github/workflows/linux-release-build.yml
vendored
@@ -39,6 +39,10 @@ jobs:
|
||||
with:
|
||||
tool-cache: false
|
||||
|
||||
# Bug: https://github.com/actions/checkout/issues/1153
|
||||
- name: Remove zombie lock file
|
||||
run: rm -f /home/ubuntu/actions-runner/_work/desktop/desktop/.git/modules/l10n/index.lock
|
||||
|
||||
- name: Checkout repository
|
||||
uses: actions/checkout@v4
|
||||
with:
|
||||
|
@@ -60,7 +60,7 @@ tab-group[split-view-group] {
|
||||
}
|
||||
}
|
||||
|
||||
&:has(> tab[visuallyselected]) {
|
||||
&:has(> tab:is([visuallyselected], [multiselected])) {
|
||||
background-color: var(--tab-selected-bgcolor);
|
||||
box-shadow: var(--tab-selected-shadow);
|
||||
|
||||
|
@@ -739,7 +739,7 @@
|
||||
}
|
||||
// Check for essentials container
|
||||
else if (essentialTabsTarget) {
|
||||
if (!draggedTab.hasAttribute('zen-essential')) {
|
||||
if (!draggedTab.hasAttribute('zen-essential') && !draggedTab?.group?.hasAttribute('split-view-group')) {
|
||||
this.addToEssentials(draggedTab);
|
||||
moved = true;
|
||||
isVertical = false;
|
||||
|
@@ -182,8 +182,8 @@ class ZenBrowserManagerSidebar extends ZenDOMOperatedFeature {
|
||||
const leftMouseOffset = startLeft - mouseDownEvent.screenX;
|
||||
const moveListener = (mouseMoveEvent) => {
|
||||
window.requestAnimationFrame(() => {
|
||||
let top = mouseMoveEvent.screenY + topMouseOffset;
|
||||
let left = mouseMoveEvent.screenX + leftMouseOffset;
|
||||
let top = mouseMoveEvent.clientY + topMouseOffset;
|
||||
let left = mouseMoveEvent.clientX + leftMouseOffset;
|
||||
|
||||
const wrapperBounds = this.sidebarWrapper.getBoundingClientRect();
|
||||
top = Math.max(0, Math.min(top, wrapperBounds.height - sideBarHeight));
|
||||
|
@@ -184,7 +184,8 @@ class ZenViewSplitter extends ZenDOMOperatedFeature {
|
||||
this.fakeBrowser ||
|
||||
!this._lastOpenedTab ||
|
||||
(this._lastOpenedTab &&
|
||||
this._lastOpenedTab.getAttribute('zen-workspace-id') !== draggedTab.getAttribute('zen-workspace-id'))
|
||||
(this._lastOpenedTab.getAttribute('zen-workspace-id') !== draggedTab.getAttribute('zen-workspace-id') ||
|
||||
this._lastOpenedTab.hasAttribute('zen-essential')))
|
||||
) {
|
||||
return;
|
||||
}
|
||||
@@ -222,7 +223,8 @@ class ZenViewSplitter extends ZenDOMOperatedFeature {
|
||||
this.fakeBrowser.id = 'zen-split-view-fake-browser';
|
||||
gBrowser.tabbox.appendChild(this.fakeBrowser);
|
||||
this.fakeBrowser.style.setProperty('--zen-split-view-fake-icon', `url(${draggedTab.getAttribute('image')})`);
|
||||
Promise.all([
|
||||
draggedTab._visuallySelected = true;
|
||||
this._finishAllAnimatingPromise = Promise.all([
|
||||
gZenUIManager.motion.animate(
|
||||
gBrowser.tabbox,
|
||||
{
|
||||
@@ -244,7 +246,9 @@ class ZenViewSplitter extends ZenDOMOperatedFeature {
|
||||
easing: 'ease-out',
|
||||
}
|
||||
),
|
||||
]).then(() => {
|
||||
]);
|
||||
this._finishAllAnimatingPromise.then(() => {
|
||||
this._canDrop = true;
|
||||
draggedTab._visuallySelected = true;
|
||||
});
|
||||
}, 100);
|
||||
@@ -1587,26 +1591,59 @@ class ZenViewSplitter extends ZenDOMOperatedFeature {
|
||||
this.splitTabs([draggedTab, droppedOnTab], gridType, 1);
|
||||
}
|
||||
}
|
||||
this._maybeRemoveFakeBrowser(false);
|
||||
this._finishAllAnimatingPromise.then(() => {
|
||||
this._maybeRemoveFakeBrowser(false);
|
||||
});
|
||||
|
||||
if (browserContainer) {
|
||||
gZenUIManager.motion.animate(
|
||||
browserContainer,
|
||||
{
|
||||
scale: [0.97, 1],
|
||||
opacity: [0, 1],
|
||||
},
|
||||
{
|
||||
type: 'spring',
|
||||
bounce: 0.4,
|
||||
duration: 0.2,
|
||||
delay: 0.1,
|
||||
}
|
||||
);
|
||||
gZenUIManager.motion
|
||||
.animate(
|
||||
browserContainer,
|
||||
{
|
||||
scale: [0.97, 1],
|
||||
opacity: [0, 1],
|
||||
},
|
||||
{
|
||||
type: 'spring',
|
||||
bounce: 0.4,
|
||||
duration: 0.2,
|
||||
delay: 0.1,
|
||||
}
|
||||
)
|
||||
.then(() => {
|
||||
this._maybeRemoveFakeBrowser(false);
|
||||
});
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
handleTabDrop(event, urls, replace, inBackground) {
|
||||
if (!inBackground || replace || urls.length !== 1) {
|
||||
return false;
|
||||
}
|
||||
const url = urls[0];
|
||||
if (!url.startsWith('panel-')) {
|
||||
return false;
|
||||
}
|
||||
const browserContainer = document.getElementById(url);
|
||||
const browser = browserContainer?.querySelector('browser');
|
||||
if (!browser) {
|
||||
return false;
|
||||
}
|
||||
const tab = gBrowser.getTabForBrowser(browser);
|
||||
if (!tab) {
|
||||
return false;
|
||||
}
|
||||
if (tab.splitView) {
|
||||
// Unsplit the tab and exit from the drag view
|
||||
this.dropZone?.removeAttribute('enabled');
|
||||
this.disableTabRearrangeView(event);
|
||||
this.removeTabFromSplit(browserContainer);
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets or creates a tab group for split view tabs
|
||||
* @param {Array} tabs Initial tabs to add to the group if creating new
|
||||
|
@@ -1,5 +1,5 @@
|
||||
diff --git a/browser/components/tabbrowser/content/tabs.js b/browser/components/tabbrowser/content/tabs.js
|
||||
index fa96568d366fd3608f9bd583fa793150bd815c8b..1e007c37cd204c63afad24c8b6d9201e6a02da2d 100644
|
||||
index fa96568d366fd3608f9bd583fa793150bd815c8b..a2a0ca3982634252abfdad20e768431a840ea19b 100644
|
||||
--- a/browser/components/tabbrowser/content/tabs.js
|
||||
+++ b/browser/components/tabbrowser/content/tabs.js
|
||||
@@ -94,7 +94,7 @@
|
||||
@@ -97,6 +97,15 @@ index fa96568d366fd3608f9bd583fa793150bd815c8b..1e007c37cd204c63afad24c8b6d9201e
|
||||
postTransitionCleanup();
|
||||
} else {
|
||||
let onTransitionEnd = transitionendEvent => {
|
||||
@@ -1249,7 +1263,7 @@
|
||||
return;
|
||||
}
|
||||
}
|
||||
-
|
||||
+ if (gZenViewSplitter.handleTabDrop(event, urls, replace, inBackground)) return;
|
||||
gBrowser.loadTabs(urls, {
|
||||
inBackground,
|
||||
replace,
|
||||
@@ -1279,13 +1293,23 @@
|
||||
return;
|
||||
}
|
||||
@@ -385,16 +394,14 @@ index fa96568d366fd3608f9bd583fa793150bd815c8b..1e007c37cd204c63afad24c8b6d9201e
|
||||
);
|
||||
|
||||
if (this.#rtlMode) {
|
||||
@@ -2347,8 +2383,12 @@
|
||||
(lastMovingTabScreen + tabSize);
|
||||
@@ -2348,7 +2384,11 @@
|
||||
translate = Math.min(Math.max(translate, firstBound), lastBound);
|
||||
|
||||
- for (let tab of movingTabs) {
|
||||
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) {
|
||||
+ if (tab.group?.hasAttribute("split-view-group")) {
|
||||
+ tab.group.style.transform = `${translateAxis}(${translate}px)`;
|
||||
+ } else {
|
||||
+ tab.style.transform = `${translateAxis}(${translate}px)`;
|
||||
+ }
|
||||
}
|
||||
|
Reference in New Issue
Block a user