feat: Added swipe support for containerized essentials, b=(no-bug), c=common, workspaces

This commit is contained in:
mr. m 2025-04-30 23:54:17 +02:00
parent a4e79d4738
commit 9da8a28345
No known key found for this signature in database
GPG key ID: 419302196C23B258
2 changed files with 30 additions and 5 deletions

View file

@ -454,7 +454,7 @@ button.popup-notification-dropmarker {
font-size: 1.5em !important; font-size: 1.5em !important;
width: min(90%, 60rem) !important; width: min(90%, 60rem) !important;
} }
top: 22svh !important; top: 20svh !important;
transform: translateX(-50%); transform: translateX(-50%);
left: 50% !important; left: 50% !important;

View file

@ -1787,8 +1787,7 @@ var ZenWorkspaces = new (class extends ZenMultiWindowFeature {
} }
_cancelSwipeAnimation() { _cancelSwipeAnimation() {
const currentWorkspace = this.activeWorkspace; this._animateTabs(this.getActiveWorkspaceFromCache(), true);
this._animateTabs({ uuid: currentWorkspace }, true);
} }
async _performWorkspaceChange(window, { onInit = false, alwaysChange = false, whileScrolling = false } = {}) { async _performWorkspaceChange(window, { onInit = false, alwaysChange = false, whileScrolling = false } = {}) {
@ -1905,12 +1904,34 @@ var ZenWorkspaces = new (class extends ZenMultiWindowFeature {
} }
// Hide other essentials with different containerTabId // Hide other essentials with different containerTabId
const otherContainersEssentials = document.querySelectorAll(`#zen-essentials-wrapper .zen-workspace-tabs-section`); const otherContainersEssentials = document.querySelectorAll(`#zen-essentials-wrapper .zen-workspace-tabs-section`);
const workspaceContextId = workspace.containerTabId;
const nextWorkspaceContextId = workspaces.workspaces[workspaceIndex + (offsetPixels > 0 ? -1 : 1)]?.containerTabId;
if (nextWorkspaceContextId !== workspaceContextId && offsetPixels && this.containerSpecificEssentials) {
document.getElementById('zen-tabs-wrapper').style.marginTop = '';
const waitForContainers = [];
for (const element of document.querySelectorAll('.zen-workspace-tabs-section.zen-workspace-pinned-tabs-section')) {
waitForContainers.push(this.updateTabsContainers(element, true));
}
await Promise.all(waitForContainers);
}
for (const container of otherContainersEssentials) { for (const container of otherContainersEssentials) {
// Get the next workspace contextId, if it's the same, dont apply offsetPixels
// if it's not we do apply it
if (container.getAttribute('container') != workspace.containerTabId && this.containerSpecificEssentials) { if (container.getAttribute('container') != workspace.containerTabId && this.containerSpecificEssentials) {
container.setAttribute('hidden', 'true'); container.setAttribute('hidden', 'true');
} else { } else {
container.removeAttribute('hidden'); container.removeAttribute('hidden');
} }
if (nextWorkspaceContextId !== workspaceContextId && offsetPixels) {
container.removeAttribute('hidden');
// Animate from the currently selected workspace
if (container.getAttribute('container') == workspaceContextId) {
container.style.transform = `translateX(${offsetPixels / 2}%)`;
} else {
// Animate from the next workspace, transitioning towards the current one
container.style.transform = `translateX(${offsetPixels / 2 + (offsetPixels > 0 ? -100 : 100)}%)`;
}
}
} }
} }
@ -2048,6 +2069,7 @@ var ZenWorkspaces = new (class extends ZenMultiWindowFeature {
const lastWorkspaceIndex = workspaces.workspaces.findIndex( const lastWorkspaceIndex = workspaces.workspaces.findIndex(
(w) => w.uuid === essentialsWorkspaces[essentialsWorkspaces.length - 1].uuid (w) => w.uuid === essentialsWorkspaces[essentialsWorkspaces.length - 1].uuid
); );
cloned.originalContainer.style.removeProperty('transform');
// Check if the container is even going to appear on the screen, to save on animation // Check if the container is even going to appear on the screen, to save on animation
if ( if (
(isGoingLeft && newWorkspaceIndex > lastWorkspaceIndex) || (isGoingLeft && newWorkspaceIndex > lastWorkspaceIndex) ||
@ -2124,7 +2146,10 @@ var ZenWorkspaces = new (class extends ZenMultiWindowFeature {
} }
const newTransform = `translateX(${newOffset}%)`; const newTransform = `translateX(${newOffset}%)`;
const existingTransform = `translateX(${existingOffset}%)`; let existingTransform = `translateX(${existingOffset}%)`;
if (container.style.transform) {
existingTransform = container.style.transform;
}
if (shouldAnimate) { if (shouldAnimate) {
container.style.transform = newTransform; container.style.transform = newTransform;
animations.push( animations.push(
@ -2153,7 +2178,7 @@ var ZenWorkspaces = new (class extends ZenMultiWindowFeature {
cloned.container.remove(); cloned.container.remove();
} }
this._alwaysAnimateMarginTop = true; this._alwaysAnimateMarginTop = true;
this.updateTabsContainers(); await this.updateTabsContainers();
} }
const essentialsContainer = this.getEssentialsSection(newWorkspace.containerTabId); const essentialsContainer = this.getEssentialsSection(newWorkspace.containerTabId);
essentialsContainer.removeAttribute('hidden'); essentialsContainer.removeAttribute('hidden');