diff -r fb49ee6e3828 -r f46af22f1079 firefox-712763.patch --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/firefox-712763.patch Mon Feb 18 14:11:20 2013 +0100 @@ -0,0 +1,95 @@ +# HG changeset patch +# User Tim Taubert +# Date 1358185823 -3600 +# Node ID f7a2af238d06c17d10c49c94ef860434d5b76758 +Bug 712763 - Backout changes from bug 669272 to keep original window order when restoring a session + +diff --git a/browser/components/sessionstore/src/SessionStore.jsm b/browser/components/sessionstore/src/SessionStore.jsm +--- a/browser/components/sessionstore/src/SessionStore.jsm ++++ b/browser/components/sessionstore/src/SessionStore.jsm +@@ -1757,23 +1757,16 @@ let SessionStoreInternal = { + + // We want to re-use the last opened window instead of opening a new one in + // the case where it's "empty" and not associated with a window in the session. + // We will do more processing via _prepWindowToRestoreInto if we need to use + // the lastWindow. + let lastWindow = this._getMostRecentBrowserWindow(); + let canUseLastWindow = lastWindow && + !lastWindow.__SS_lastSessionWindowID; +- let lastSessionFocusedWindow = null; +- this.windowToFocus = lastWindow; +- +- // move the last focused window to the start of the array so that we +- // minimize window movement (see bug 669272) +- lastSessionState.windows.unshift( +- lastSessionState.windows.splice(lastSessionState.selectedWindow - 1, 1)[0]); + + // Restore into windows or open new ones as needed. + for (let i = 0; i < lastSessionState.windows.length; i++) { + let winState = lastSessionState.windows[i]; + let lastSessionWindowID = winState.__lastSessionWindowID; + // delete lastSessionWindowID so we don't add that to the window again + delete winState.__lastSessionWindowID; + +@@ -1801,28 +1794,19 @@ let SessionStoreInternal = { + // Restore into that window - pretend it's a followup since we'll already + // have a focused window. + //XXXzpao This is going to merge extData together (taking what was in + // winState over what is in the window already. The hack we have + // in _preWindowToRestoreInto will prevent most (all?) Panorama + // weirdness but we will still merge other extData. + // Bug 588217 should make this go away by merging the group data. + this.restoreWindow(windowToUse, { windows: [winState] }, canOverwriteTabs, true); +- if (i == 0) +- lastSessionFocusedWindow = windowToUse; +- +- // if we overwrote the tabs for our last focused window, we should +- // give focus to the window that had it in the previous session +- if (canOverwriteTabs && windowToUse == lastWindow) +- this.windowToFocus = lastSessionFocusedWindow; + } + else { +- let win = this._openWindowWithState({ windows: [winState] }); +- if (i == 0) +- lastSessionFocusedWindow = win; ++ this._openWindowWithState({ windows: [winState] }); + } + } + + // Merge closed windows from this session with ones from last session + if (lastSessionState._closedWindows) { + this._closedWindows = this._closedWindows.concat(lastSessionState._closedWindows); + this._capClosedWindows(); + } +@@ -2735,27 +2719,27 @@ let SessionStoreInternal = { + this._setWindowStateBusy(aWindow); + + if (root._closedWindows) + this._closedWindows = root._closedWindows; + + var winData; + if (!root.selectedWindow || root.selectedWindow > root.windows.length) { + root.selectedWindow = 0; +- } else { +- // put the selected window at the beginning of the array to ensure that +- // it gets restored first +- root.windows.unshift(root.windows.splice(root.selectedWindow - 1, 1)[0]); + } ++ + // open new windows for all further window entries of a multi-window session + // (unless they don't contain any tab data) + for (var w = 1; w < root.windows.length; w++) { + winData = root.windows[w]; + if (winData && winData.tabs && winData.tabs[0]) { + var window = this._openWindowWithState({ windows: [winData] }); ++ if (w == root.selectedWindow - 1) { ++ this.windowToFocus = window; ++ } + } + } + winData = root.windows[0]; + if (!winData.tabs) { + winData.tabs = []; + } + // don't restore a single blank tab when we've had an external + // URL passed in for loading at startup (cf. bug 357419)