タブバーを右に置いている時、起動時に一瞬だけ左にタブバーが見えていたのをごまかすようにした
git-svn-id: http://www.cozmixng.org/repos/piro/treestyletab/trunk@6252 599a83e7-65a4-db11-8015-0010dcdd6dc2
This commit is contained in:
parent
7a08fb726e
commit
f56e18ff23
@ -6,13 +6,13 @@
|
|||||||
// do something
|
// do something
|
||||||
window['piro.sakura.ne.jp'].stopRendering.start();
|
window['piro.sakura.ne.jp'].stopRendering.start();
|
||||||
|
|
||||||
lisence: The MIT License, Copyright (c) 2009 SHIMODA "Piro" Hiroshi
|
lisence: The MIT License, Copyright (c) 2009-2010 SHIMODA "Piro" Hiroshi
|
||||||
http://www.cozmixng.org/repos/piro/fx3-compatibility-lib/trunk/license.txt
|
http://www.cozmixng.org/repos/piro/fx3-compatibility-lib/trunk/license.txt
|
||||||
original:
|
original:
|
||||||
http://www.cozmixng.org/repos/piro/fx3-compatibility-lib/trunk/stopRendering.js
|
http://www.cozmixng.org/repos/piro/fx3-compatibility-lib/trunk/stopRendering.js
|
||||||
*/
|
*/
|
||||||
(function() {
|
(function() {
|
||||||
const currentRevision = 2;
|
const currentRevision = 4;
|
||||||
|
|
||||||
if (!('piro.sakura.ne.jp' in window)) window['piro.sakura.ne.jp'] = {};
|
if (!('piro.sakura.ne.jp' in window)) window['piro.sakura.ne.jp'] = {};
|
||||||
|
|
||||||
@ -23,6 +23,12 @@
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (loadedRevision &&
|
||||||
|
'destroy' in window['piro.sakura.ne.jp'].stopRendering)
|
||||||
|
window['piro.sakura.ne.jp'].stopRendering.destroy();
|
||||||
|
|
||||||
|
const Ci = Components.interfaces;
|
||||||
|
|
||||||
window['piro.sakura.ne.jp'].stopRendering = {
|
window['piro.sakura.ne.jp'].stopRendering = {
|
||||||
revision : currentRevision,
|
revision : currentRevision,
|
||||||
|
|
||||||
@ -31,27 +37,93 @@
|
|||||||
get baswWindow()
|
get baswWindow()
|
||||||
{
|
{
|
||||||
return window.top
|
return window.top
|
||||||
.QueryInterface(Components.interfaces.nsIInterfaceRequestor)
|
.QueryInterface(Ci.nsIInterfaceRequestor)
|
||||||
.getInterface(Components.interfaces.nsIWebNavigation)
|
.getInterface(Ci.nsIWebNavigation)
|
||||||
.QueryInterface(Components.interfaces.nsIDocShell)
|
.QueryInterface(Ci.nsIDocShell)
|
||||||
.QueryInterface(Components.interfaces.nsIBaseWindow);
|
.QueryInterface(Ci.nsIBaseWindow);
|
||||||
},
|
},
|
||||||
|
|
||||||
stop : function()
|
stop : function()
|
||||||
{
|
{
|
||||||
if (!this._stopLevel) {
|
this.baswWindow.setPosition(window.top.innerWidth * 3, window.top.innerHeight * 3);
|
||||||
this.baswWindow.setPosition(window.top.innerWidth * 3, window.top.innerHeight * 3);
|
|
||||||
}
|
|
||||||
this._stopLevel++;
|
this._stopLevel++;
|
||||||
},
|
},
|
||||||
|
|
||||||
start : function()
|
start : function()
|
||||||
{
|
{
|
||||||
this._stopLevel--;
|
this._stopLevel--;
|
||||||
if (!this._stopLevel) {
|
if (this._stopLevel > 0)
|
||||||
this.baswWindow.setPosition(0, 0);
|
return;
|
||||||
|
|
||||||
|
this._stopLevel = 0;
|
||||||
|
this.baswWindow.setPosition(0, 0);
|
||||||
|
|
||||||
|
this._popups.forEach(function(aPopup, aIndex) {
|
||||||
|
if (aPopup.state != 'open') return;
|
||||||
|
var w = aPopup.boxObject.width;
|
||||||
|
var h = aPopup.boxObject.height;
|
||||||
|
aPopup.sizeTo(w, h-1);
|
||||||
|
aPopup.sizeTo(w, h);
|
||||||
|
}, this);
|
||||||
|
},
|
||||||
|
|
||||||
|
onResize : function(aEvent)
|
||||||
|
{
|
||||||
|
if (aEvent.target != window || !this._stopLevel)
|
||||||
|
return;
|
||||||
|
|
||||||
|
this._stopLevel = 0;
|
||||||
|
this.start();
|
||||||
|
},
|
||||||
|
|
||||||
|
|
||||||
|
handleEvent : function(aEvent)
|
||||||
|
{
|
||||||
|
switch (aEvent.type)
|
||||||
|
{
|
||||||
|
case 'unload':
|
||||||
|
this.destroy();
|
||||||
|
return;
|
||||||
|
|
||||||
|
case 'resize':
|
||||||
|
this.onResize(aEvent);
|
||||||
|
return;
|
||||||
|
|
||||||
|
case 'popupshown':
|
||||||
|
let (index = this._popups.indexOf(aEvent.originalTarget)) {
|
||||||
|
if (index < 0)
|
||||||
|
this._popups.push(aEvent.originalTarget);
|
||||||
|
}
|
||||||
|
return;
|
||||||
|
|
||||||
|
case 'popuphidden':
|
||||||
|
let (index = this._popups.indexOf(aEvent.originalTarget)) {
|
||||||
|
if (index > -1)
|
||||||
|
this._popups.splice(index, 1);
|
||||||
|
}
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
init : function()
|
||||||
|
{
|
||||||
|
this._popups = [];
|
||||||
|
window.addEventListener('resize', this, false);
|
||||||
|
window.addEventListener('popupshown', this, false);
|
||||||
|
window.addEventListener('popuphidden', this, false);
|
||||||
|
window.addEventListener('unload', this, false);
|
||||||
|
},
|
||||||
|
|
||||||
|
destroy : function()
|
||||||
|
{
|
||||||
|
this._popups = [];
|
||||||
|
window.removeEventListener('resize', this, false);
|
||||||
|
window.removeEventListener('popupshown', this, false);
|
||||||
|
window.removeEventListener('popuphidden', this, false);
|
||||||
|
window.removeEventListener('unload', this, false);
|
||||||
}
|
}
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
window['piro.sakura.ne.jp'].stopRendering.init();
|
||||||
})();
|
})();
|
||||||
|
@ -132,6 +132,8 @@ TreeStyleTabBrowser.prototype = {
|
|||||||
|
|
||||||
init : function TSTBrowser_init()
|
init : function TSTBrowser_init()
|
||||||
{
|
{
|
||||||
|
this.stopRendering();
|
||||||
|
|
||||||
var b = this.mTabBrowser;
|
var b = this.mTabBrowser;
|
||||||
|
|
||||||
this.internallyTabMovingCount = 0;
|
this.internallyTabMovingCount = 0;
|
||||||
@ -151,7 +153,7 @@ TreeStyleTabBrowser.prototype = {
|
|||||||
let position = this.currentTabbarPosition;
|
let position = this.currentTabbarPosition;
|
||||||
this.fireTabbarPositionEvent('TreeStyleTabTabbarPositionChanging', 'top', position); /* PUBLIC API */
|
this.fireTabbarPositionEvent('TreeStyleTabTabbarPositionChanging', 'top', position); /* PUBLIC API */
|
||||||
|
|
||||||
this.initTabbar();
|
this.initTabbar(this.kTABBAR_TOP);
|
||||||
|
|
||||||
b.addEventListener('TabOpen', this, true);
|
b.addEventListener('TabOpen', this, true);
|
||||||
b.addEventListener('TabClose', this, true);
|
b.addEventListener('TabClose', this, true);
|
||||||
@ -591,6 +593,8 @@ TreeStyleTabBrowser.prototype = {
|
|||||||
this.fireTabbarPositionEvent('TreeStyleTabTabbarPositionChanged', 'top', position); /* PUBLIC API */
|
this.fireTabbarPositionEvent('TreeStyleTabTabbarPositionChanged', 'top', position); /* PUBLIC API */
|
||||||
|
|
||||||
b = null;
|
b = null;
|
||||||
|
|
||||||
|
this.startRendering();
|
||||||
},
|
},
|
||||||
|
|
||||||
initTab : function TSTBrowser_initTab(aTab)
|
initTab : function TSTBrowser_initTab(aTab)
|
||||||
@ -758,24 +762,33 @@ TreeStyleTabBrowser.prototype = {
|
|||||||
}, 0, this);
|
}, 0, this);
|
||||||
},
|
},
|
||||||
|
|
||||||
initTabbar : function TSTBrowser_initTabbar(aPosition)
|
initTabbar : function TSTBrowser_initTabbar(aOldPosition)
|
||||||
{
|
{
|
||||||
this.stopRendering();
|
this.stopRendering();
|
||||||
|
|
||||||
var b = this.mTabBrowser;
|
var b = this.mTabBrowser;
|
||||||
|
|
||||||
if (!aPosition) aPosition = this.currentTabbarPosition;
|
var pos = this.getPositionFlag(this.currentTabbarPosition);
|
||||||
aPosition = String(aPosition).toLowerCase();
|
|
||||||
|
|
||||||
if (b.getAttribute('id') != 'content' &&
|
if (b.getAttribute('id') != 'content' &&
|
||||||
!this.getTreePref('tabbar.position.subbrowser.enabled')) {
|
!this.getTreePref('tabbar.position.subbrowser.enabled')) {
|
||||||
aPosition = 'top';
|
pos = this.kTABBAR_TOP;
|
||||||
}
|
}
|
||||||
|
|
||||||
var pos = (aPosition == 'left') ? this.kTABBAR_LEFT :
|
aOldPosition = aOldPosition || pos;
|
||||||
(aPosition == 'right') ? this.kTABBAR_RIGHT :
|
|
||||||
(aPosition == 'bottom') ? this.kTABBAR_BOTTOM :
|
// We have to use CSS property hack instead, because the stopRendering()
|
||||||
this.kTABBAR_TOP;
|
// doesn't effect on the first time of startup.
|
||||||
|
// * This hack works in a "stop"-"start" pair, so, people never see the side effect.
|
||||||
|
// * This hack works only when "ordinal" properties are modified.
|
||||||
|
// So, this is just for the case: "right" or "bottom" tab bar on the startup.
|
||||||
|
if (
|
||||||
|
pos != aOldPosition &&
|
||||||
|
(
|
||||||
|
((pos & this.kTABBAR_REGULAR) && (aOldPosition & this.kTABBAR_INVERTED)) ||
|
||||||
|
((pos & this.kTABBAR_INVERTED) && (aOldPosition & this.kTABBAR_REGULAR))
|
||||||
|
)
|
||||||
|
)
|
||||||
|
b.style.visibility = 'hidden';
|
||||||
|
|
||||||
var splitter = this._ensureNewSplitter();
|
var splitter = this._ensureNewSplitter();
|
||||||
var toggler = document.getAnonymousElementByAttribute(b, 'class', this.kTABBAR_TOGGLER);
|
var toggler = document.getAnonymousElementByAttribute(b, 'class', this.kTABBAR_TOGGLER);
|
||||||
@ -953,6 +966,8 @@ TreeStyleTabBrowser.prototype = {
|
|||||||
delayedPostProcess(aSelf, aTabBrowser, aSplitter, aToggler);
|
delayedPostProcess(aSelf, aTabBrowser, aSplitter, aToggler);
|
||||||
aSelf.updateTabbarOverflow();
|
aSelf.updateTabbarOverflow();
|
||||||
delayedPostProcess = null;
|
delayedPostProcess = null;
|
||||||
|
aSelf.mTabBrowser.style.visibility = '';
|
||||||
|
aSelf.startRendering();
|
||||||
}, 0, this, b, splitter, toggler);
|
}, 0, this, b, splitter, toggler);
|
||||||
|
|
||||||
b = null;
|
b = null;
|
||||||
@ -966,8 +981,6 @@ TreeStyleTabBrowser.prototype = {
|
|||||||
scrollInnerBox = null;
|
scrollInnerBox = null;
|
||||||
scrollInnerBox = null;
|
scrollInnerBox = null;
|
||||||
allTabsButton = null;
|
allTabsButton = null;
|
||||||
|
|
||||||
this.startRendering();
|
|
||||||
},
|
},
|
||||||
|
|
||||||
_ensureNewSplitter : function TSTBrowser__ensureNewSplitter()
|
_ensureNewSplitter : function TSTBrowser__ensureNewSplitter()
|
||||||
@ -1203,7 +1216,7 @@ TreeStyleTabBrowser.prototype = {
|
|||||||
case 'extensions.treestyletab.tabbar.position':
|
case 'extensions.treestyletab.tabbar.position':
|
||||||
var oldPosition = b.getAttribute(this.kTABBAR_POSITION);
|
var oldPosition = b.getAttribute(this.kTABBAR_POSITION);
|
||||||
this.fireTabbarPositionEvent('TreeStyleTabTabbarPositionChanging', oldPosition, value); /* PUBLIC API */
|
this.fireTabbarPositionEvent('TreeStyleTabTabbarPositionChanging', oldPosition, value); /* PUBLIC API */
|
||||||
this.initTabbar();
|
this.initTabbar(this.getPositionFlag(oldPosition));
|
||||||
tabs.forEach(function(aTab) {
|
tabs.forEach(function(aTab) {
|
||||||
this.initTabAttributes(aTab);
|
this.initTabAttributes(aTab);
|
||||||
}, this);
|
}, this);
|
||||||
|
@ -14,7 +14,7 @@
|
|||||||
* The Original Code is the Tree Style Tab.
|
* The Original Code is the Tree Style Tab.
|
||||||
*
|
*
|
||||||
* The Initial Developer of the Original Code is SHIMODA Hiroshi.
|
* The Initial Developer of the Original Code is SHIMODA Hiroshi.
|
||||||
* Portions created by the Initial Developer are Copyright (C) 2009
|
* Portions created by the Initial Developer are Copyright (C) 2010
|
||||||
* the Initial Developer. All Rights Reserved.
|
* the Initial Developer. All Rights Reserved.
|
||||||
*
|
*
|
||||||
* Contributor(s): SHIMODA Hiroshi <piro@p.club.ne.jp>
|
* Contributor(s): SHIMODA Hiroshi <piro@p.club.ne.jp>
|
||||||
@ -134,6 +134,8 @@ var TreeStyleTabUtils = {
|
|||||||
|
|
||||||
kTABBAR_HORIZONTAL : (1 << 0) | (1 << 1),
|
kTABBAR_HORIZONTAL : (1 << 0) | (1 << 1),
|
||||||
kTABBAR_VERTICAL : (1 << 2) | (1 << 3),
|
kTABBAR_VERTICAL : (1 << 2) | (1 << 3),
|
||||||
|
kTABBAR_REGULAR : (1 << 0) | (1 << 2),
|
||||||
|
kTABBAR_INVERTED : (1 << 3) | (1 << 4),
|
||||||
|
|
||||||
kINSERT_FISRT : 0,
|
kINSERT_FISRT : 0,
|
||||||
kINSERT_LAST : 1,
|
kINSERT_LAST : 1,
|
||||||
@ -1480,6 +1482,15 @@ var TreeStyleTabUtils = {
|
|||||||
|
|
||||||
return aValue;
|
return aValue;
|
||||||
},
|
},
|
||||||
|
|
||||||
|
getPositionFlag : function TSTUtils_getPositionFlag(aPosition)
|
||||||
|
{
|
||||||
|
aPosition = String(aPosition).toLowerCase();
|
||||||
|
return (aPosition == 'left') ? this.kTABBAR_LEFT :
|
||||||
|
(aPosition == 'right') ? this.kTABBAR_RIGHT :
|
||||||
|
(aPosition == 'bottom') ? this.kTABBAR_BOTTOM :
|
||||||
|
this.kTABBAR_TOP;
|
||||||
|
},
|
||||||
|
|
||||||
/* Pref Listener */
|
/* Pref Listener */
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user