From a4386de00d656a59425152b33b416b1012135d75 Mon Sep 17 00:00:00 2001 From: "mr. m" Date: Sat, 31 Jan 2026 18:29:37 +0100 Subject: [PATCH] fix: Fixed dragging tabs to different windows causing freeze, b=closes #12178, c=tabs --- .../sessionstore/ZenSessionManager.sys.mjs | 15 ++++++++++++++ src/zen/tabs/ZenPinnedTabManager.mjs | 20 ++++++++++++++++++- surfer.json | 2 +- 3 files changed, 35 insertions(+), 2 deletions(-) diff --git a/src/zen/sessionstore/ZenSessionManager.sys.mjs b/src/zen/sessionstore/ZenSessionManager.sys.mjs index 323b5872a..e965fd984 100644 --- a/src/zen/sessionstore/ZenSessionManager.sys.mjs +++ b/src/zen/sessionstore/ZenSessionManager.sys.mjs @@ -164,6 +164,21 @@ export class nsZenSessionManager { } catch { /* ignore errors reading recovery data */ } + if (!data.recoverYData) { + try { + data.recoveryData = await IOUtils.readJSON( + PathUtils.join( + Services.dirsvc.get("ProfD", Ci.nsIFile).path, + "sessionstore-backups", + "recovery.jsonlz4" + ), + { decompress: true } + ); + this.log("Recovered recovery data from sessionstore-backups"); + } catch { + /* ignore errors reading recovery data */ + } + } this._migrationData = data; } catch { /* ignore errors during migration */ diff --git a/src/zen/tabs/ZenPinnedTabManager.mjs b/src/zen/tabs/ZenPinnedTabManager.mjs index ed812990f..33f76a1a9 100644 --- a/src/zen/tabs/ZenPinnedTabManager.mjs +++ b/src/zen/tabs/ZenPinnedTabManager.mjs @@ -563,7 +563,25 @@ class nsZenPinnedTabManager extends nsZenDOMOperatedFeature { return false; } movingTabs = movingTabs.map((tab) => { - return tab.ownerGlobal !== window ? gBrowser.adoptTab(tab) : tab; + let workspaceId; + if (tab.ownerGlobal !== window) { + if ( + !tab.hasAttribute("zen-essential") && + tab.getAttribute("zen-workspace-id") != gZenWorkspaces.activeWorkspace + ) { + workspaceId = gZenWorkspaces.activeWorkspace; + tab.ownerGlobal.gBrowser.selectedTab = tab.ownerGlobal.gBrowser._findTabToBlurTo( + tab, + movingTabs + ); + tab.ownerGlobal.gZenWorkspaces.moveTabToWorkspace(tab, workspaceId); + } + tab = gBrowser.adoptTab(tab); + if (workspaceId) { + tab.setAttribute("zen-workspace-id", workspaceId); + } + } + return tab; }); try { const pinnedTabsTarget = event.target.closest( diff --git a/surfer.json b/surfer.json index 5f1d833d3..9a8442f96 100644 --- a/surfer.json +++ b/surfer.json @@ -20,7 +20,7 @@ "brandShortName": "Zen", "brandFullName": "Zen Browser", "release": { - "displayVersion": "1.18.3b", + "displayVersion": "1.18.4b", "github": { "repo": "zen-browser/desktop" },