並べ替え処理修正

git-svn-id: http://www.cozmixng.org/repos/piro/treestyletab/trunk@5155 599a83e7-65a4-db11-8015-0010dcdd6dc2
This commit is contained in:
piro 2009-09-30 05:36:08 +00:00
parent 0f8689da45
commit fe3d2b4c0e

View File

@ -1856,33 +1856,8 @@ TreeStyleTabBrowser.prototype = {
this.updateTabsIndent([tab], undefined, undefined, aWithoutAnimation); this.updateTabsIndent([tab], undefined, undefined, aWithoutAnimation);
this.checkTabsIndentOverflow(); this.checkTabsIndentOverflow();
if (parent.getAttribute(this.kCHILDREN_RESTORING)) { if (parent.getAttribute(this.kCHILDREN_RESTORING))
if (parent.restoringChildrenTimer) this.correctChildTabsOrderWithDelay(parent);
window.clearTimeout(parent.restoringChildrenTimer);
parent.restoringChildrenTimer = window.setTimeout(function(aSelf, aTabBrowser, aTab) {
let restoringChildren = parent.getAttribute(this.kCHILDREN_RESTORING);
let children = aTab.getAttribute(aSelf.kCHILDREN);
if (restoringChildren != children) {
var restoringChildrenIDs = restoringChildren.split('|');
restoringChildrenIDs.forEach(function(aChild, aIndex) {
aChild = aSelf.getTabById(aChild);
if (!aChild) return;
let newPos = aIndex < restoringChildrenIDs.length-1 ?
aSelf.getTabById(restoringChildrenIDs[aIndex+1]) :
aSelf.getNextSiblingTab(aTab) ;
newPos = newPos ?
newPos._tPos - 1 :
aSelf.getTabs(aTabBrowser).snapshotLength - 1 ;
if (newPos > aChild._tPos) newPos--;
aSelf.moveTabTo(aChild, newPos);
}, aSelf);
children = aTab.getAttribute(aSelf.kCHILDREN);
}
if (restoringChildren == children)
aTab.removeAttribute(aSelf.kCHILDREN_RESTORING);
aTab.restoringChildrenTimer = null;
}, 100, this, b, parent);
}
} }
else { else {
this.deleteTabValue(tab, this.kPARENT); this.deleteTabValue(tab, this.kPARENT);
@ -1915,6 +1890,50 @@ TreeStyleTabBrowser.prototype = {
if (mayBeDuplicated) this.clearRedirectionTable(); if (mayBeDuplicated) this.clearRedirectionTable();
}, },
correctChildTabsOrderWithDelay : function(aTab)
{
if (aTab.correctChildTabsOrderWithDelayTimer)
window.clearTimeout(aTab.correctChildTabsOrderWithDelayTimer);
aTab.correctChildTabsOrderWithDelayTimer = window.setTimeout(function(aSelf) {
aSelf.correctChildTabsOrder(aTab);
}, 100, this);
},
correctChildTabsOrder : function(aTab)
{
var restoringChildren = aTab.getAttribute(this.kCHILDREN_RESTORING);
if (!restoringChildren) return;
var children = aTab.getAttribute(this.kCHILDREN);
if (restoringChildren != children) {
var restoringChildrenIDs = restoringChildren.split('|');
restoringChildrenIDs.reverse().forEach(function(aChild, aIndex) {
aChild = this.getTabById(aChild);
if (!aChild) return;
let nextTab = aIndex > 0 ?
this.getTabById(restoringChildrenIDs[aIndex-1]) :
this.getNextSiblingTab(aTab) ;
if (nextTab == this.getNextSiblingTab(aChild)) return;
let newPos;
if (nextTab) {
newPos = nextTab._tPos;
if (newPos > aChild._tPos) newPos--;
}
else {
newPos = this.getTabs(this.mTabBrowser).snapshotLength - 1;
}
this.moveTabSubTreeTo(aChild, newPos);
}, this);
children = aTab.getAttribute(this.kCHILDREN);
}
if (restoringChildren == children)
aTab.removeAttribute(this.kCHILDREN_RESTORING);
aTab.correctChildTabsOrderWithDelayTimer = null;
},
redirectId : function(aId) redirectId : function(aId)
{ {