From dd26ec1171f5f038a60cad7a06a8471643cd4075 Mon Sep 17 00:00:00 2001 From: "mr. m" Date: Wed, 18 Feb 2026 12:52:26 +0100 Subject: [PATCH] fix: Fixed tabs becoming empty tabs when switching between windows, b=bug #12421, c=no-component --- .../sessionstore/ZenSessionManager.sys.mjs | 6 +----- src/zen/sessionstore/ZenWindowSync.sys.mjs | 20 ++++++++++--------- 2 files changed, 12 insertions(+), 14 deletions(-) diff --git a/src/zen/sessionstore/ZenSessionManager.sys.mjs b/src/zen/sessionstore/ZenSessionManager.sys.mjs index 0bcaedc4f..70b456703 100644 --- a/src/zen/sessionstore/ZenSessionManager.sys.mjs +++ b/src/zen/sessionstore/ZenSessionManager.sys.mjs @@ -30,10 +30,6 @@ XPCOMUtils.defineLazyPreferenceGetter( 3 ); -const SHOULD_LOG_TAB_ENTRIES = Services.prefs.getBoolPref( - "zen.session-store.log-tab-entries", - false -); const SHOULD_BACKUP_FILE = Services.prefs.getBoolPref("zen.session-store.backup-file", true); const FILE_NAME = "zen-sessions.jsonlz4"; @@ -236,7 +232,7 @@ export class nsZenSessionManager { this._shouldRunMigration = true; await this.#getDataFromDBForMigration(); } - if (SHOULD_LOG_TAB_ENTRIES) { + if (Services.prefs.getBoolPref("zen.session-store.log-tab-entries", false)) { for (const tab of this.#sidebar.tabs || []) { this.log("Tab entry in session file:", tab); } diff --git a/src/zen/sessionstore/ZenWindowSync.sys.mjs b/src/zen/sessionstore/ZenWindowSync.sys.mjs index 4c2acef32..f825ef4e8 100644 --- a/src/zen/sessionstore/ZenWindowSync.sys.mjs +++ b/src/zen/sessionstore/ZenWindowSync.sys.mjs @@ -715,7 +715,7 @@ class nsZenWindowSync { return; } lazy.TabStateCache.update(aOurTab.linkedBrowser.permanentKey, { - history: tabStateEntries, + history: Cu.cloneInto(tabStateEntries, {}), }); }; // Running `swapBrowsersAndCloseOther` doesn't expect us to use the tab after @@ -815,17 +815,19 @@ class nsZenWindowSync { }); let promise = this.#createPseudoImageForBrowser(otherBrowser, mySrc); - await Promise.all([promiseToWait, promise]); callback(); - otherBrowser.setAttribute("zen-pseudo-hidden", "true"); - ourBrowser.removeAttribute("zen-pseudo-hidden"); - this.#maybeRemovePseudoImageForBrowser(ourBrowser); - } else { - ourBrowser.removeAttribute("zen-pseudo-hidden"); - this.#maybeRemovePseudoImageForBrowser(ourBrowser); + lazy.setTimeout(() => { + otherBrowser.setAttribute("zen-pseudo-hidden", "true"); + ourBrowser.removeAttribute("zen-pseudo-hidden"); + this.#maybeRemovePseudoImageForBrowser(ourBrowser); + ourBrowser.focus(); + resolve(); + }); + return; } - + ourBrowser.removeAttribute("zen-pseudo-hidden"); + this.#maybeRemovePseudoImageForBrowser(ourBrowser); resolve(); }); }