Restore tree structure on the startup correctly, with Firefox 29 and later
This commit is contained in:
parent
f58cd7a994
commit
0a0a4003b5
@ -1098,6 +1098,19 @@ var TreeStyleTabBase = {
|
|||||||
).booleanValue;
|
).booleanValue;
|
||||||
},
|
},
|
||||||
|
|
||||||
|
getTabFromBrowser : function TSTBase_getTabFromBrowser(aBrowser, aTabBrowser)
|
||||||
|
{
|
||||||
|
var b = aTabBrowser || this.browser;
|
||||||
|
var tabs = this.getAllTabs(b);
|
||||||
|
for (let i = 0, maxi = tabs.length; i < maxi; i++)
|
||||||
|
{
|
||||||
|
let tab = tabs[i];
|
||||||
|
if (tab.linkedBrowser == aBrowser)
|
||||||
|
return tab;
|
||||||
|
}
|
||||||
|
return null;
|
||||||
|
},
|
||||||
|
|
||||||
getTabFromFrame : function TSTBase_getTabFromFrame(aFrame, aTabBrowser)
|
getTabFromFrame : function TSTBase_getTabFromFrame(aFrame, aTabBrowser)
|
||||||
{
|
{
|
||||||
var b = aTabBrowser || this.browser;
|
var b = aTabBrowser || this.browser;
|
||||||
|
@ -244,7 +244,23 @@ let TreeStyleTabUtils = {
|
|||||||
},
|
},
|
||||||
|
|
||||||
|
|
||||||
isTabNotRestoredYet: function(aTab)
|
get shouldUseMessageManager()
|
||||||
|
{
|
||||||
|
if (this._shouldUseMessageManager !== null)
|
||||||
|
return this._shouldUseMessageManager;
|
||||||
|
|
||||||
|
try { // detect Firefox 29 and later
|
||||||
|
Cu.import('resource:///modules/sessionstore/ContentRestore.jsm', {});
|
||||||
|
this._shouldUseMessageManager = true;
|
||||||
|
}
|
||||||
|
catch(e) {
|
||||||
|
this._shouldUseMessageManager = false;
|
||||||
|
}
|
||||||
|
return this._shouldUseMessageManager;
|
||||||
|
},
|
||||||
|
_shouldUseMessageManager: undefined,
|
||||||
|
|
||||||
|
isTabNotRestoredYet : function utils_isTabNotRestoredYet(aTab)
|
||||||
{
|
{
|
||||||
var browser = aTab.linkedBrowser;
|
var browser = aTab.linkedBrowser;
|
||||||
// Firefox 25 and later. See: https://bugzilla.mozilla.org/show_bug.cgi?id=867142
|
// Firefox 25 and later. See: https://bugzilla.mozilla.org/show_bug.cgi?id=867142
|
||||||
|
@ -365,6 +365,10 @@ TreeStyleTabWindow.prototype = {
|
|||||||
w.addEventListener('beforecustomization', this, true);
|
w.addEventListener('beforecustomization', this, true);
|
||||||
w.addEventListener('aftercustomization', this, false);
|
w.addEventListener('aftercustomization', this, false);
|
||||||
|
|
||||||
|
// for Firefox 29 and later, after https://bugzilla.mozilla.org/show_bug.cgi?id=942374
|
||||||
|
if (w.messageManager && utils.shouldUseMessageManager)
|
||||||
|
w.messageManager.addMessageListener('SessionStore:restoreTabContentStarted', this);
|
||||||
|
|
||||||
this.fullscreenObserver = new FullscreenObserver(this.window);
|
this.fullscreenObserver = new FullscreenObserver(this.window);
|
||||||
this.initUIShowHideObserver();
|
this.initUIShowHideObserver();
|
||||||
|
|
||||||
@ -495,6 +499,10 @@ TreeStyleTabWindow.prototype = {
|
|||||||
w.removeEventListener('beforecustomization', this, true);
|
w.removeEventListener('beforecustomization', this, true);
|
||||||
w.removeEventListener('aftercustomization', this, false);
|
w.removeEventListener('aftercustomization', this, false);
|
||||||
|
|
||||||
|
// for Firefox 29 and later, after https://bugzilla.mozilla.org/show_bug.cgi?id=942374
|
||||||
|
if (w.messageManager && utils.shouldUseMessageManager)
|
||||||
|
w.messageManager.removeMessageListener('SessionStore:restoreTabContentStarted', this);
|
||||||
|
|
||||||
this.fullscreenObserver.destroy();
|
this.fullscreenObserver.destroy();
|
||||||
delete this.fullscreenObserver;
|
delete this.fullscreenObserver;
|
||||||
|
|
||||||
@ -851,6 +859,24 @@ TreeStyleTabWindow.prototype = {
|
|||||||
prefs.getPref('browser.ctrlTab.previews');
|
prefs.getPref('browser.ctrlTab.previews');
|
||||||
},
|
},
|
||||||
|
|
||||||
|
// for Firefox 29 and later, after https://bugzilla.mozilla.org/show_bug.cgi?id=942374
|
||||||
|
receiveMessage : function TSTWindow_receiveMessage(aMessage)
|
||||||
|
{
|
||||||
|
var browser = aMessage.target;
|
||||||
|
var tabbrowser = this.getTabBrowserFromChild(browser);
|
||||||
|
if (!tabbrowser)
|
||||||
|
return;
|
||||||
|
var tab = tabbrowser.treeStyleTab.getTabFromBrowser(browser);
|
||||||
|
if (!tab)
|
||||||
|
return;
|
||||||
|
|
||||||
|
switch (aMessage.name)
|
||||||
|
{
|
||||||
|
case 'SessionStore:restoreTabContentStarted':
|
||||||
|
return tabbrowser.treeStyleTab.onRestoreTabContentStarted(tab);
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
onTabbarResizeStart : function TSTWindow_onTabbarResizeStart(aEvent)
|
onTabbarResizeStart : function TSTWindow_onTabbarResizeStart(aEvent)
|
||||||
{
|
{
|
||||||
if (aEvent.button != 0)
|
if (aEvent.button != 0)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user