Place newly opened tab to the correct position

This commit is contained in:
YUKI Hiroshi 2016-01-19 20:27:43 +09:00
parent d49f911985
commit 1b8f61f778

View File

@ -3168,10 +3168,14 @@ TreeStyleTabBrowser.prototype = inherit(TreeStyleTabWindow.prototype, {
if (typeof this.readiedToAttachNewTab !== 'boolean') { if (typeof this.readiedToAttachNewTab !== 'boolean') {
this.window.setTimeout((function() { this.window.setTimeout((function() {
if (tab.owner && tab.owner != this.getParentTab(tab)) { if (!tab.owner)
mydump('TSTBrowser_onTabOpen: new child tab opened by browser.tabs.insertRelatedAfterCurrent=true\n'); return;
this.attachTabTo(tab, tab.owner); mydump('TSTBrowser_onTabOpen: new child tab opened by browser.tabs.insertRelatedAfterCurrent=true\n');
} var nextTab = this.findNextTabForNewChild(tab, tab.owner);
mydump(' next tab: '+(nextTab && nextTab._tPos)+'\n');
this.attachTabTo(tab, tab.owner, {
insertBefore: nextTab
});
}).bind(this), 0); }).bind(this), 0);
} }
@ -3211,6 +3215,11 @@ TreeStyleTabBrowser.prototype = inherit(TreeStyleTabWindow.prototype, {
if (refTab = this.getFirstChildTab(parent)) if (refTab = this.getFirstChildTab(parent))
this.insertBefore = refTab.getAttribute(this.kID); this.insertBefore = refTab.getAttribute(this.kID);
} }
else {
refTab = this.findNextTabForNewChild(tab, parent);
if (refTab)
nextIndex = refTab._tPos;
}
if (newIndex > -1) { if (newIndex > -1) {
if (newIndex > tab._tPos) if (newIndex > tab._tPos)
@ -3284,6 +3293,23 @@ TreeStyleTabBrowser.prototype = inherit(TreeStyleTabWindow.prototype, {
_addedCountClearTimer : null, _addedCountClearTimer : null,
_checkRestoringWindowTimerOnTabAdded : null, _checkRestoringWindowTimerOnTabAdded : null,
findNextTabForNewChild : function TSTBrowser_findNextTabForNewChild(aTab, aParent)
{
if (!aParent)
return this.getNextTab(aTab);
var nextTab;
if (utils.getTreePref('insertNewChildAt') === this.kINSERT_FISRT)
nextTab = this.getFirstChildTab(aParent);
else
nextTab = this.getNextSiblingTab(aParent) || this.getNextTab(this.getLastDescendantTab(aParent));
if (nextTab == aTab)
nextTab = this.getNextTab(nextTab);
return nextTab;
},
scrollToNewTab : function TSTBrowser_scrollToNewTab(aTab) scrollToNewTab : function TSTBrowser_scrollToNewTab(aTab)
{ {
if (!aTab.parentNode) // do nothing for closed tab! if (!aTab.parentNode) // do nothing for closed tab!
@ -3583,6 +3609,14 @@ TreeStyleTabBrowser.prototype = inherit(TreeStyleTabWindow.prototype, {
var b = this.mTabBrowser; var b = this.mTabBrowser;
var prevPosition = aEvent.detail; var prevPosition = aEvent.detail;
if (tab.owner && this.internallyTabMovingCount <= 0) {
mydump('onTabMove for new child tab: move back '+tab._tPos+' => '+prevPosition+'\n');
this.internallyTabMovingCount++;
b.moveTabTo(tab, prevPosition);
this.internallyTabMovingCount--;
return;
}
tab.__treestyletab__previousPosition = prevPosition; tab.__treestyletab__previousPosition = prevPosition;
mydump('onTabMove '+prevPosition+' => '+tab._tPos+'\n'); mydump('onTabMove '+prevPosition+' => '+tab._tPos+'\n');