タブバーの位置が変更される前後で常にイベントを発行するようにした
git-svn-id: http://www.cozmixng.org/repos/piro/treestyletab/trunk@5615 599a83e7-65a4-db11-8015-0010dcdd6dc2
This commit is contained in:
parent
11f04a3505
commit
b6bd8ed487
@ -258,6 +258,52 @@ TreeStyleTabService.overrideExtensionsOnInitBefore = function TSTService_overrid
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Tabberwocky
|
||||||
|
// https://addons.mozilla.org/firefox/addon/14439
|
||||||
|
if ('tabberwocky' in window) {
|
||||||
|
TreeStyleTabBrowser.prototype.isMultiRow = function()
|
||||||
|
{
|
||||||
|
return this.getPref('tabberwocky.multirow') && !this.isVertical;
|
||||||
|
};
|
||||||
|
|
||||||
|
let listener = {
|
||||||
|
handleEvent : function(aEvent)
|
||||||
|
{
|
||||||
|
switch (aEvent.type)
|
||||||
|
{
|
||||||
|
case 'TreeStyleTabTabbarPositionChanged':
|
||||||
|
var b = aEvent.originalTarget;
|
||||||
|
if (b.treeStyleTab.isVertical)
|
||||||
|
b.treeStyleTab.setPref('tabberwocky.multirow', false);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 'unload':
|
||||||
|
window.removeEventListener('TreeStyleTabTabbarPositionChanged', this, false);
|
||||||
|
window.removeEventListener('unload', this, false);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
window.addEventListener('TreeStyleTabTabbarPositionChanged', listener, false);
|
||||||
|
window.addEventListener('unload', listener, false);
|
||||||
|
|
||||||
|
if ('openSelectedLinks' in tabberwocky) {
|
||||||
|
eval('tabberwocky.openSelectedLinks = '+
|
||||||
|
tabberwocky.openSelectedLinks.toSource().replace(
|
||||||
|
'links.forEach(',
|
||||||
|
<![CDATA[
|
||||||
|
TreeStyleTabService.readyToOpenChildTab(aFrame, true)
|
||||||
|
$&]]>
|
||||||
|
).replace(
|
||||||
|
/(\}\)?)$/,
|
||||||
|
<![CDATA[
|
||||||
|
TreeStyleTabService.stopToOpenChildTab(aFrame)
|
||||||
|
$1]]>
|
||||||
|
)
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
TreeStyleTabService.overrideExtensionsOnInitAfter = function TSTService_overrideExtensionsOnInitAfter() {
|
TreeStyleTabService.overrideExtensionsOnInitAfter = function TSTService_overrideExtensionsOnInitAfter() {
|
||||||
@ -932,36 +978,6 @@ TreeStyleTabService.overrideExtensionsOnInitAfter = function TSTService_override
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Tabberwocky
|
|
||||||
// https://addons.mozilla.org/firefox/addon/14439
|
|
||||||
if ('multirow' in window &&
|
|
||||||
'updateMultiRowTabs' in multirow) {
|
|
||||||
eval('multirow.updateMultiRowTabs = '+
|
|
||||||
multirow.updateMultiRowTabs.toSource().replace(
|
|
||||||
'gBrowser.mPrefs.getBoolPref("tabberwocky.multirow")',
|
|
||||||
'$& && !gBrowser.treeStyleTab.isVertical'
|
|
||||||
)
|
|
||||||
);
|
|
||||||
window.setTimeout('multirow.updateMultiRowTabs();', 0);
|
|
||||||
}
|
|
||||||
if ('tabberwocky' in window) {
|
|
||||||
if ('openSelectedLinks' in tabberwocky) {
|
|
||||||
eval('tabberwocky.openSelectedLinks = '+
|
|
||||||
tabberwocky.openSelectedLinks.toSource().replace(
|
|
||||||
'links.forEach(',
|
|
||||||
<![CDATA[
|
|
||||||
TreeStyleTabService.readyToOpenChildTab(aFrame, true)
|
|
||||||
$&]]>
|
|
||||||
).replace(
|
|
||||||
/(\}\)?)$/,
|
|
||||||
<![CDATA[
|
|
||||||
TreeStyleTabService.stopToOpenChildTab(aFrame)
|
|
||||||
$1]]>
|
|
||||||
)
|
|
||||||
);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
window.setTimeout(function(aSelf) {
|
window.setTimeout(function(aSelf) {
|
||||||
aSelf.overrideExtensionsDelayed();
|
aSelf.overrideExtensionsDelayed();
|
||||||
}, 0, this);
|
}, 0, this);
|
||||||
|
@ -148,6 +148,9 @@ TreeStyleTabBrowser.prototype = {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
let position = this.currentTabbarPosition;
|
||||||
|
this.fireTabbarPositionEvent('TreeStyleTabTabbarPositionChanging', 'top', position); /* PUBLIC API */
|
||||||
|
|
||||||
this.initTabbar();
|
this.initTabbar();
|
||||||
|
|
||||||
b.addEventListener('TabOpen', this, true);
|
b.addEventListener('TabOpen', this, true);
|
||||||
@ -583,6 +586,8 @@ TreeStyleTabBrowser.prototype = {
|
|||||||
|
|
||||||
this.autoHide;
|
this.autoHide;
|
||||||
|
|
||||||
|
this.fireTabbarPositionEvent('TreeStyleTabTabbarPositionChanged', 'top', position); /* PUBLIC API */
|
||||||
|
|
||||||
b = null;
|
b = null;
|
||||||
},
|
},
|
||||||
|
|
||||||
@ -1060,6 +1065,17 @@ TreeStyleTabBrowser.prototype = {
|
|||||||
}, 100);
|
}, 100);
|
||||||
},
|
},
|
||||||
|
|
||||||
|
fireTabbarPositionEvent : function TSTBrowser_fireTabbarPositionEvent(aType, aOldPosition, aNewPosition)
|
||||||
|
{
|
||||||
|
if (aOldPosition == aNewPosition) return;
|
||||||
|
|
||||||
|
var event = document.createEvent('Events');
|
||||||
|
event.initEvent(aType, true, true);
|
||||||
|
event.oldPosition = aOldPosition;
|
||||||
|
event.newPosition = aNewPosition;
|
||||||
|
this.mTabBrowser.dispatchEvent(event);
|
||||||
|
},
|
||||||
|
|
||||||
destroy : function TSTBrowser_destroy()
|
destroy : function TSTBrowser_destroy()
|
||||||
{
|
{
|
||||||
this.autoHide.destroy();
|
this.autoHide.destroy();
|
||||||
@ -1174,14 +1190,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);
|
||||||
let (event) {
|
this.fireTabbarPositionEvent('TreeStyleTabTabbarPositionChanging', oldPosition, value); /* PUBLIC API */
|
||||||
/* PUBLIC API */
|
|
||||||
event = document.createEvent('Events');
|
|
||||||
event.initEvent('TreeStyleTabTabbarPositionChanging', true, true);
|
|
||||||
event.oldPosition = oldPosition;
|
|
||||||
event.newPosition = value;
|
|
||||||
this.mTabBrowser.dispatchEvent(event);
|
|
||||||
}
|
|
||||||
this.initTabbar();
|
this.initTabbar();
|
||||||
tabs.forEach(function(aTab) {
|
tabs.forEach(function(aTab) {
|
||||||
this.initTabAttributes(aTab);
|
this.initTabAttributes(aTab);
|
||||||
@ -1189,14 +1198,7 @@ TreeStyleTabBrowser.prototype = {
|
|||||||
tabs.forEach(function(aTab) {
|
tabs.forEach(function(aTab) {
|
||||||
this.initTabContents(aTab);
|
this.initTabContents(aTab);
|
||||||
}, this);
|
}, this);
|
||||||
let (event) {
|
this.fireTabbarPositionEvent('TreeStyleTabTabbarPositionChanged', oldPosition, value); /* PUBLIC API */
|
||||||
/* PUBLIC API */
|
|
||||||
event = document.createEvent('Events');
|
|
||||||
event.initEvent('TreeStyleTabTabbarPositionChanged', true, true);
|
|
||||||
event.oldPosition = oldPosition;
|
|
||||||
event.newPosition = value;
|
|
||||||
this.mTabBrowser.dispatchEvent(event);
|
|
||||||
}
|
|
||||||
window.setTimeout(function(aSelf) {
|
window.setTimeout(function(aSelf) {
|
||||||
aSelf.checkTabsIndentOverflow();
|
aSelf.checkTabsIndentOverflow();
|
||||||
}, 0, this);
|
}, 0, this);
|
||||||
@ -1698,7 +1700,12 @@ TreeStyleTabBrowser.prototype = {
|
|||||||
if (
|
if (
|
||||||
nextFocusedTab &&
|
nextFocusedTab &&
|
||||||
this._tabFocusAllowance.every(function(aFunc) {
|
this._tabFocusAllowance.every(function(aFunc) {
|
||||||
|
try {
|
||||||
return aFunc.call(this, b);
|
return aFunc.call(this, b);
|
||||||
|
}
|
||||||
|
catch(e) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
}, this)
|
}, this)
|
||||||
)
|
)
|
||||||
b.selectedTab = nextFocusedTab;
|
b.selectedTab = nextFocusedTab;
|
||||||
|
Loading…
Reference in New Issue
Block a user