author | Wolfgang Rosenauer <wr@rosenauer.org> |
Sat, 16 Mar 2013 00:07:21 +0100 | |
branch | firefox19 |
changeset 631 | e5ead5bc3360 |
parent 616 | f46af22f1079 |
permissions | -rw-r--r-- |
616
f46af22f1079
Bug 712763 - Backout changes from bug 669272 to keep original window order when restoring a session
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff
changeset
|
1 |
# HG changeset patch |
f46af22f1079
Bug 712763 - Backout changes from bug 669272 to keep original window order when restoring a session
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff
changeset
|
2 |
# User Tim Taubert <ttaubert@mozilla.com> |
f46af22f1079
Bug 712763 - Backout changes from bug 669272 to keep original window order when restoring a session
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff
changeset
|
3 |
# Date 1358185823 -3600 |
f46af22f1079
Bug 712763 - Backout changes from bug 669272 to keep original window order when restoring a session
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff
changeset
|
4 |
# Node ID f7a2af238d06c17d10c49c94ef860434d5b76758 |
f46af22f1079
Bug 712763 - Backout changes from bug 669272 to keep original window order when restoring a session
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff
changeset
|
5 |
Bug 712763 - Backout changes from bug 669272 to keep original window order when restoring a session |
f46af22f1079
Bug 712763 - Backout changes from bug 669272 to keep original window order when restoring a session
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff
changeset
|
6 |
|
f46af22f1079
Bug 712763 - Backout changes from bug 669272 to keep original window order when restoring a session
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff
changeset
|
7 |
diff --git a/browser/components/sessionstore/src/SessionStore.jsm b/browser/components/sessionstore/src/SessionStore.jsm |
f46af22f1079
Bug 712763 - Backout changes from bug 669272 to keep original window order when restoring a session
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff
changeset
|
8 |
--- a/browser/components/sessionstore/src/SessionStore.jsm |
f46af22f1079
Bug 712763 - Backout changes from bug 669272 to keep original window order when restoring a session
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff
changeset
|
9 |
+++ b/browser/components/sessionstore/src/SessionStore.jsm |
f46af22f1079
Bug 712763 - Backout changes from bug 669272 to keep original window order when restoring a session
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff
changeset
|
10 |
@@ -1757,23 +1757,16 @@ let SessionStoreInternal = { |
f46af22f1079
Bug 712763 - Backout changes from bug 669272 to keep original window order when restoring a session
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff
changeset
|
11 |
|
f46af22f1079
Bug 712763 - Backout changes from bug 669272 to keep original window order when restoring a session
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff
changeset
|
12 |
// We want to re-use the last opened window instead of opening a new one in |
f46af22f1079
Bug 712763 - Backout changes from bug 669272 to keep original window order when restoring a session
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff
changeset
|
13 |
// the case where it's "empty" and not associated with a window in the session. |
f46af22f1079
Bug 712763 - Backout changes from bug 669272 to keep original window order when restoring a session
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff
changeset
|
14 |
// We will do more processing via _prepWindowToRestoreInto if we need to use |
f46af22f1079
Bug 712763 - Backout changes from bug 669272 to keep original window order when restoring a session
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff
changeset
|
15 |
// the lastWindow. |
f46af22f1079
Bug 712763 - Backout changes from bug 669272 to keep original window order when restoring a session
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff
changeset
|
16 |
let lastWindow = this._getMostRecentBrowserWindow(); |
f46af22f1079
Bug 712763 - Backout changes from bug 669272 to keep original window order when restoring a session
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff
changeset
|
17 |
let canUseLastWindow = lastWindow && |
f46af22f1079
Bug 712763 - Backout changes from bug 669272 to keep original window order when restoring a session
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff
changeset
|
18 |
!lastWindow.__SS_lastSessionWindowID; |
f46af22f1079
Bug 712763 - Backout changes from bug 669272 to keep original window order when restoring a session
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff
changeset
|
19 |
- let lastSessionFocusedWindow = null; |
f46af22f1079
Bug 712763 - Backout changes from bug 669272 to keep original window order when restoring a session
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff
changeset
|
20 |
- this.windowToFocus = lastWindow; |
f46af22f1079
Bug 712763 - Backout changes from bug 669272 to keep original window order when restoring a session
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff
changeset
|
21 |
- |
f46af22f1079
Bug 712763 - Backout changes from bug 669272 to keep original window order when restoring a session
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff
changeset
|
22 |
- // move the last focused window to the start of the array so that we |
f46af22f1079
Bug 712763 - Backout changes from bug 669272 to keep original window order when restoring a session
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff
changeset
|
23 |
- // minimize window movement (see bug 669272) |
f46af22f1079
Bug 712763 - Backout changes from bug 669272 to keep original window order when restoring a session
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff
changeset
|
24 |
- lastSessionState.windows.unshift( |
f46af22f1079
Bug 712763 - Backout changes from bug 669272 to keep original window order when restoring a session
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff
changeset
|
25 |
- lastSessionState.windows.splice(lastSessionState.selectedWindow - 1, 1)[0]); |
f46af22f1079
Bug 712763 - Backout changes from bug 669272 to keep original window order when restoring a session
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff
changeset
|
26 |
|
f46af22f1079
Bug 712763 - Backout changes from bug 669272 to keep original window order when restoring a session
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff
changeset
|
27 |
// Restore into windows or open new ones as needed. |
f46af22f1079
Bug 712763 - Backout changes from bug 669272 to keep original window order when restoring a session
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff
changeset
|
28 |
for (let i = 0; i < lastSessionState.windows.length; i++) { |
f46af22f1079
Bug 712763 - Backout changes from bug 669272 to keep original window order when restoring a session
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff
changeset
|
29 |
let winState = lastSessionState.windows[i]; |
f46af22f1079
Bug 712763 - Backout changes from bug 669272 to keep original window order when restoring a session
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff
changeset
|
30 |
let lastSessionWindowID = winState.__lastSessionWindowID; |
f46af22f1079
Bug 712763 - Backout changes from bug 669272 to keep original window order when restoring a session
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff
changeset
|
31 |
// delete lastSessionWindowID so we don't add that to the window again |
f46af22f1079
Bug 712763 - Backout changes from bug 669272 to keep original window order when restoring a session
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff
changeset
|
32 |
delete winState.__lastSessionWindowID; |
f46af22f1079
Bug 712763 - Backout changes from bug 669272 to keep original window order when restoring a session
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff
changeset
|
33 |
|
f46af22f1079
Bug 712763 - Backout changes from bug 669272 to keep original window order when restoring a session
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff
changeset
|
34 |
@@ -1801,28 +1794,19 @@ let SessionStoreInternal = { |
f46af22f1079
Bug 712763 - Backout changes from bug 669272 to keep original window order when restoring a session
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff
changeset
|
35 |
// Restore into that window - pretend it's a followup since we'll already |
f46af22f1079
Bug 712763 - Backout changes from bug 669272 to keep original window order when restoring a session
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff
changeset
|
36 |
// have a focused window. |
f46af22f1079
Bug 712763 - Backout changes from bug 669272 to keep original window order when restoring a session
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff
changeset
|
37 |
//XXXzpao This is going to merge extData together (taking what was in |
f46af22f1079
Bug 712763 - Backout changes from bug 669272 to keep original window order when restoring a session
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff
changeset
|
38 |
// winState over what is in the window already. The hack we have |
f46af22f1079
Bug 712763 - Backout changes from bug 669272 to keep original window order when restoring a session
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff
changeset
|
39 |
// in _preWindowToRestoreInto will prevent most (all?) Panorama |
f46af22f1079
Bug 712763 - Backout changes from bug 669272 to keep original window order when restoring a session
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff
changeset
|
40 |
// weirdness but we will still merge other extData. |
f46af22f1079
Bug 712763 - Backout changes from bug 669272 to keep original window order when restoring a session
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff
changeset
|
41 |
// Bug 588217 should make this go away by merging the group data. |
f46af22f1079
Bug 712763 - Backout changes from bug 669272 to keep original window order when restoring a session
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff
changeset
|
42 |
this.restoreWindow(windowToUse, { windows: [winState] }, canOverwriteTabs, true); |
f46af22f1079
Bug 712763 - Backout changes from bug 669272 to keep original window order when restoring a session
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff
changeset
|
43 |
- if (i == 0) |
f46af22f1079
Bug 712763 - Backout changes from bug 669272 to keep original window order when restoring a session
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff
changeset
|
44 |
- lastSessionFocusedWindow = windowToUse; |
f46af22f1079
Bug 712763 - Backout changes from bug 669272 to keep original window order when restoring a session
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff
changeset
|
45 |
- |
f46af22f1079
Bug 712763 - Backout changes from bug 669272 to keep original window order when restoring a session
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff
changeset
|
46 |
- // if we overwrote the tabs for our last focused window, we should |
f46af22f1079
Bug 712763 - Backout changes from bug 669272 to keep original window order when restoring a session
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff
changeset
|
47 |
- // give focus to the window that had it in the previous session |
f46af22f1079
Bug 712763 - Backout changes from bug 669272 to keep original window order when restoring a session
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff
changeset
|
48 |
- if (canOverwriteTabs && windowToUse == lastWindow) |
f46af22f1079
Bug 712763 - Backout changes from bug 669272 to keep original window order when restoring a session
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff
changeset
|
49 |
- this.windowToFocus = lastSessionFocusedWindow; |
f46af22f1079
Bug 712763 - Backout changes from bug 669272 to keep original window order when restoring a session
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff
changeset
|
50 |
} |
f46af22f1079
Bug 712763 - Backout changes from bug 669272 to keep original window order when restoring a session
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff
changeset
|
51 |
else { |
f46af22f1079
Bug 712763 - Backout changes from bug 669272 to keep original window order when restoring a session
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff
changeset
|
52 |
- let win = this._openWindowWithState({ windows: [winState] }); |
f46af22f1079
Bug 712763 - Backout changes from bug 669272 to keep original window order when restoring a session
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff
changeset
|
53 |
- if (i == 0) |
f46af22f1079
Bug 712763 - Backout changes from bug 669272 to keep original window order when restoring a session
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff
changeset
|
54 |
- lastSessionFocusedWindow = win; |
f46af22f1079
Bug 712763 - Backout changes from bug 669272 to keep original window order when restoring a session
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff
changeset
|
55 |
+ this._openWindowWithState({ windows: [winState] }); |
f46af22f1079
Bug 712763 - Backout changes from bug 669272 to keep original window order when restoring a session
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff
changeset
|
56 |
} |
f46af22f1079
Bug 712763 - Backout changes from bug 669272 to keep original window order when restoring a session
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff
changeset
|
57 |
} |
f46af22f1079
Bug 712763 - Backout changes from bug 669272 to keep original window order when restoring a session
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff
changeset
|
58 |
|
f46af22f1079
Bug 712763 - Backout changes from bug 669272 to keep original window order when restoring a session
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff
changeset
|
59 |
// Merge closed windows from this session with ones from last session |
f46af22f1079
Bug 712763 - Backout changes from bug 669272 to keep original window order when restoring a session
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff
changeset
|
60 |
if (lastSessionState._closedWindows) { |
f46af22f1079
Bug 712763 - Backout changes from bug 669272 to keep original window order when restoring a session
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff
changeset
|
61 |
this._closedWindows = this._closedWindows.concat(lastSessionState._closedWindows); |
f46af22f1079
Bug 712763 - Backout changes from bug 669272 to keep original window order when restoring a session
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff
changeset
|
62 |
this._capClosedWindows(); |
f46af22f1079
Bug 712763 - Backout changes from bug 669272 to keep original window order when restoring a session
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff
changeset
|
63 |
} |
f46af22f1079
Bug 712763 - Backout changes from bug 669272 to keep original window order when restoring a session
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff
changeset
|
64 |
@@ -2735,27 +2719,27 @@ let SessionStoreInternal = { |
f46af22f1079
Bug 712763 - Backout changes from bug 669272 to keep original window order when restoring a session
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff
changeset
|
65 |
this._setWindowStateBusy(aWindow); |
f46af22f1079
Bug 712763 - Backout changes from bug 669272 to keep original window order when restoring a session
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff
changeset
|
66 |
|
f46af22f1079
Bug 712763 - Backout changes from bug 669272 to keep original window order when restoring a session
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff
changeset
|
67 |
if (root._closedWindows) |
f46af22f1079
Bug 712763 - Backout changes from bug 669272 to keep original window order when restoring a session
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff
changeset
|
68 |
this._closedWindows = root._closedWindows; |
f46af22f1079
Bug 712763 - Backout changes from bug 669272 to keep original window order when restoring a session
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff
changeset
|
69 |
|
f46af22f1079
Bug 712763 - Backout changes from bug 669272 to keep original window order when restoring a session
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff
changeset
|
70 |
var winData; |
f46af22f1079
Bug 712763 - Backout changes from bug 669272 to keep original window order when restoring a session
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff
changeset
|
71 |
if (!root.selectedWindow || root.selectedWindow > root.windows.length) { |
f46af22f1079
Bug 712763 - Backout changes from bug 669272 to keep original window order when restoring a session
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff
changeset
|
72 |
root.selectedWindow = 0; |
f46af22f1079
Bug 712763 - Backout changes from bug 669272 to keep original window order when restoring a session
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff
changeset
|
73 |
- } else { |
f46af22f1079
Bug 712763 - Backout changes from bug 669272 to keep original window order when restoring a session
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff
changeset
|
74 |
- // put the selected window at the beginning of the array to ensure that |
f46af22f1079
Bug 712763 - Backout changes from bug 669272 to keep original window order when restoring a session
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff
changeset
|
75 |
- // it gets restored first |
f46af22f1079
Bug 712763 - Backout changes from bug 669272 to keep original window order when restoring a session
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff
changeset
|
76 |
- root.windows.unshift(root.windows.splice(root.selectedWindow - 1, 1)[0]); |
f46af22f1079
Bug 712763 - Backout changes from bug 669272 to keep original window order when restoring a session
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff
changeset
|
77 |
} |
f46af22f1079
Bug 712763 - Backout changes from bug 669272 to keep original window order when restoring a session
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff
changeset
|
78 |
+ |
f46af22f1079
Bug 712763 - Backout changes from bug 669272 to keep original window order when restoring a session
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff
changeset
|
79 |
// open new windows for all further window entries of a multi-window session |
f46af22f1079
Bug 712763 - Backout changes from bug 669272 to keep original window order when restoring a session
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff
changeset
|
80 |
// (unless they don't contain any tab data) |
f46af22f1079
Bug 712763 - Backout changes from bug 669272 to keep original window order when restoring a session
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff
changeset
|
81 |
for (var w = 1; w < root.windows.length; w++) { |
f46af22f1079
Bug 712763 - Backout changes from bug 669272 to keep original window order when restoring a session
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff
changeset
|
82 |
winData = root.windows[w]; |
f46af22f1079
Bug 712763 - Backout changes from bug 669272 to keep original window order when restoring a session
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff
changeset
|
83 |
if (winData && winData.tabs && winData.tabs[0]) { |
f46af22f1079
Bug 712763 - Backout changes from bug 669272 to keep original window order when restoring a session
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff
changeset
|
84 |
var window = this._openWindowWithState({ windows: [winData] }); |
f46af22f1079
Bug 712763 - Backout changes from bug 669272 to keep original window order when restoring a session
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff
changeset
|
85 |
+ if (w == root.selectedWindow - 1) { |
f46af22f1079
Bug 712763 - Backout changes from bug 669272 to keep original window order when restoring a session
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff
changeset
|
86 |
+ this.windowToFocus = window; |
f46af22f1079
Bug 712763 - Backout changes from bug 669272 to keep original window order when restoring a session
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff
changeset
|
87 |
+ } |
f46af22f1079
Bug 712763 - Backout changes from bug 669272 to keep original window order when restoring a session
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff
changeset
|
88 |
} |
f46af22f1079
Bug 712763 - Backout changes from bug 669272 to keep original window order when restoring a session
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff
changeset
|
89 |
} |
f46af22f1079
Bug 712763 - Backout changes from bug 669272 to keep original window order when restoring a session
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff
changeset
|
90 |
winData = root.windows[0]; |
f46af22f1079
Bug 712763 - Backout changes from bug 669272 to keep original window order when restoring a session
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff
changeset
|
91 |
if (!winData.tabs) { |
f46af22f1079
Bug 712763 - Backout changes from bug 669272 to keep original window order when restoring a session
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff
changeset
|
92 |
winData.tabs = []; |
f46af22f1079
Bug 712763 - Backout changes from bug 669272 to keep original window order when restoring a session
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff
changeset
|
93 |
} |
f46af22f1079
Bug 712763 - Backout changes from bug 669272 to keep original window order when restoring a session
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff
changeset
|
94 |
// don't restore a single blank tab when we've had an external |
f46af22f1079
Bug 712763 - Backout changes from bug 669272 to keep original window order when restoring a session
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff
changeset
|
95 |
// URL passed in for loading at startup (cf. bug 357419) |