From a3af97ef98a890f8cac2c6a4359f1a8eb3972af4 Mon Sep 17 00:00:00 2001 From: Piro / SHIMODA Hiroshi Date: Tue, 13 Dec 2011 23:21:31 +0900 Subject: [PATCH] rearrange methods --- modules/browser.js | 287 ++++++++++++++++++++++++--------------------- 1 file changed, 152 insertions(+), 135 deletions(-) diff --git a/modules/browser.js b/modules/browser.js index e7aa3f99..fdad6f19 100644 --- a/modules/browser.js +++ b/modules/browser.js @@ -334,6 +334,36 @@ TreeStyleTabBrowser.prototype = { return close; }, + getTabFromTabbarEvent : function TSTBrowser_getTabFromTabbarEvent(aEvent) + { + if ( + !this.shouldDetectClickOnIndentSpaces || + !this.getAncestorTabbarFromEvent(aEvent) || + this.isEventFiredOnClickable(aEvent) || + this.getSplitterFromEvent(aEvent) + ) + return null; + + var tab = null; + var clickedPoint = aEvent[this.screenPositionProp]; + this.getTabsArray(this.mTabBrowser).some(function(aTab) { + var box = aTab.boxObject; + if (box[this.screenPositionProp] > clickedPoint || + box[this.screenPositionProp] + box[this.sizeProp] < clickedPoint) { + return false; + } + tab = aTab; + return true; + }, this); + return tab; + }, + + getNextFocusedTab : function TSTBrowser_getNextFocusedTab(aTab) + { + return this.getNextSiblingTab(aTab) || + this.getPreviousVisibleTab(aTab); + }, + isTabInViewport : function TSTBrowser_isTabInViewport(aTab) { if (!this.windowService.preInitialized || !aTab) @@ -834,16 +864,18 @@ TreeStyleTabBrowser.prototype = { if (!aTab.hasAttribute(this.kNEST)) aTab.setAttribute(this.kNEST, 0); }, - isTabInitialized : function TSTBrowser_isTabInitialized(aTab) + + isTabInitialized : function TSTBrowser_isTabInitialized(aTab) { return aTab.getAttribute(this.kID); }, - ensureTabInitialized : function TSTBrowser_ensureTabInitialized(aTab) + + ensureTabInitialized : function TSTBrowser_ensureTabInitialized(aTab) { if (!aTab || this.isTabInitialized(aTab)) return; this.initTab(aTab); }, - + initTabAttributes : function TSTBrowser_initTabAttributes(aTab) { var pos = this.position; @@ -2313,80 +2345,6 @@ TreeStyleTabBrowser.prototype = { { this.restoreTree(true); }, - - restoreTree : function TSTBrowser_restoreTree(aForceRestore) - { - if (!this.needRestoreTree && !aForceRestore) - return; - - this.needRestoreTree = false; - - if (!this.window.__SS_tabsToRestore || this.window.__SS_tabsToRestore <= 1) - return; - - var tabs = this.getAllTabsArray(this.mTabBrowser); - tabs = tabs.filter(function(aTab) { - if ( - !aTab.linkedBrowser.__SS_restoreState || - !aTab.linkedBrowser.__treestyletab__toBeRestored - ) - return false; - - var currentId = aTab.getAttribute(this.kID); - if (this.tabsHash[currentId] == aTab) - delete this.tabsHash[currentId]; - - this.resetTabState(aTab); - - var [id, duplicated] = this._restoreTabId(aTab); - - this.setTabValue(aTab, this.kID, id); - this.tabsHash[id] = aTab; - - aTab.__treestyletab__structureRestored = true; - aTab.__treestyletab__duplicated = duplicated; - - return true; - }, this); - - this.updateAllTabsIndent(true); - - // restore tree from bottom safely - tabs.reverse() - .filter(this.restoreOneTab, this) - .forEach(this.updateInsertionPositionInfo, this); - }, - restoreOneTab : function TSTBrowser_restoreOneTab(aTab) - { - let duplicated = aTab.__treestyletab__duplicated; - - let children = this.getTabValue(aTab, this.kCHILDREN); - if (children) { - this.deleteTabValue(aTab, this.kCHILDREN); - let subTreeCollapsed = this.getTabValue(aTab, this.kSUBTREE_COLLAPSED) == 'true'; - subTreeCollapsed = this._restoreSubtreeCollapsedState(aTab, subTreeCollapsed); - let self = this; - this._restoreChildTabsRelation(aTab, children, duplicated, function(aChild) { - /** - * When the child has the reference to the parent tab, attachTabTo() - * does nothing. To ensure they are correctly related, we have to - * clear the relation here. - */ - self.deleteTabValue(aChild, self.kPARENT); - let refId = self.getTabValue(aChild, self.kINSERT_BEFORE); - if (refId && duplicated) refId = self.redirectId(refId); - return { - forceExpand : true, // to prevent to collapse the selected tab - dontAnimate : true, - insertBefore : self.getTabById(refId) - }; - }); - this.collapseExpandSubtree(aTab, subTreeCollapsed, true); - } - - delete aTab.__treestyletab__duplicated; - return true - }, /* DOM Event Handling */ @@ -2526,7 +2484,7 @@ TreeStyleTabBrowser.prototype = { lastScrollY : -1, tabViewHiding : false, - restoreLastScrollPosition : function TSTBrowser_restoreLastScrollPosition() + restoreLastScrollPosition : function TSTBrowser_restoreLastScrollPosition() { if (this.lastScrollX < 0 || this.lastScrollY < 0) return; var lastX = this.lastScrollX; @@ -2541,11 +2499,13 @@ TreeStyleTabBrowser.prototype = { scrollBoxObject.scrollTo(lastX, lastY); } }, - clearLastScrollPosition : function TSTBrowser_clearLastScrollPosition() + + clearLastScrollPosition : function TSTBrowser_clearLastScrollPosition() { this.lastScrollX = -1; this.lastScrollY = -1; }, + updateLastScrollPosition : function TSTBrowser_updateLastScrollPosition() { if (!this.isVertical) return; @@ -2670,8 +2630,8 @@ TreeStyleTabBrowser.prototype = { _addedCountInThisLoop : 0, _addedCountClearTimer : null, _checkRestoringWindowTimerOnTabAdded : null, - - updateInsertionPositionInfo : function TSTBrowser_updateInsertionPositionInfo(aTab) + + updateInsertionPositionInfo : function TSTBrowser_updateInsertionPositionInfo(aTab) { var prev = this.getPreviousSiblingTab(aTab); if (prev) { @@ -2685,7 +2645,7 @@ TreeStyleTabBrowser.prototype = { this.setTabValue(next, this.kINSERT_AFTER, aTab.getAttribute(this.kID)); } }, - + onTabClose : function TSTBrowser_onTabClose(aEvent) { var tab = aEvent.originalTarget; @@ -2868,7 +2828,8 @@ TreeStyleTabBrowser.prototype = { if (collapsed) this.startRendering(); }, - _reserveCloseNeedlessGroupTabSibling : function TSTBrowser_reserveCloseNeedlessGroupTabSibling(aTab) + + _reserveCloseNeedlessGroupTabSibling : function TSTBrowser_reserveCloseNeedlessGroupTabSibling(aTab) { if (!aTab) return null; @@ -2893,12 +2854,7 @@ TreeStyleTabBrowser.prototype = { return null; }, - getNextFocusedTab : function TSTBrowser_getNextFocusedTab(aTab) - { - return this.getNextSiblingTab(aTab) || - this.getPreviousVisibleTab(aTab); - }, - + onTabsClosing : function TSTBrowser_onTabsClosing(aEvent) { var tabs = aEvent.tabs || aEvent.getData('tabs'); @@ -3160,7 +3116,8 @@ TreeStyleTabBrowser.prototype = { }, 0, this); }, tabVisibilityChangedTimer : null, - updateTreeByTabVisibility : function TSTBrowser_updateTreeByTabVisibility(aChangedTabs) + + updateTreeByTabVisibility : function TSTBrowser_updateTreeByTabVisibility(aChangedTabs) { this.internallyTabMovingCount++; @@ -3231,8 +3188,8 @@ TreeStyleTabBrowser.prototype = { } this.internallyTabMovingCount--; }, - tabViewTreeIsMoving : false, - subtreeFollowParentAcrossTabGroups : function TSTBrowser_subtreeFollowParentAcrossTabGroups(aParent) + + subtreeFollowParentAcrossTabGroups : function TSTBrowser_subtreeFollowParentAcrossTabGroups(aParent) { if (this.tabViewTreeIsMoving) return; @@ -3258,7 +3215,8 @@ TreeStyleTabBrowser.prototype = { this.internallyTabMovingCount--; this.tabViewTreeIsMoving = false; }, - + tabViewTreeIsMoving : false, + onTabRestoring : function TSTBrowser_onTabRestoring(aEvent) { this.restoreTree(); @@ -3400,7 +3358,8 @@ TreeStyleTabBrowser.prototype = { if (mayBeDuplicated) this.clearRedirectionTable(); }, - _restoreTabId : function TSTBrowser_restoreTabId(aTab) + + _restoreTabId : function TSTBrowser_restoreTabId(aTab) { var id = this.getTabValue(aTab, this.kID); var mayBeDuplicated = false; @@ -3419,7 +3378,8 @@ TreeStyleTabBrowser.prototype = { return [id, mayBeDuplicated]; }, - _getCloseSetId : function TSTBrowser_getCloseSetId(aTab, aMayBeDuplicated) + + _getCloseSetId : function TSTBrowser_getCloseSetId(aTab, aMayBeDuplicated) { var closeSetId = null; if (!aMayBeDuplicated) { @@ -3442,7 +3402,8 @@ TreeStyleTabBrowser.prototype = { this.deleteTabValue(aTab, this.kCLOSED_SET_ID); return closeSetId; }, - _restoreSubtreeCollapsedState : function TSTBrowser_restoreSubtreeCollapsedState(aTab, aCollapsed) + + _restoreSubtreeCollapsedState : function TSTBrowser_restoreSubtreeCollapsedState(aTab, aCollapsed) { var shouldCollapse = this.getTreePref('collapseExpandSubtree.sessionRestore'); @@ -3460,7 +3421,8 @@ TreeStyleTabBrowser.prototype = { this.setTabValue(aTab, this.kSUBTREE_COLLAPSED, isSubtreeCollapsed); return isSubtreeCollapsed; }, - _restoreChildTabsRelation : function TSTBrowser_restoreChildTabsRelation(aTab, aChildrenList, aMayBeDuplicated, aOptions) + + _restoreChildTabsRelation : function TSTBrowser_restoreChildTabsRelation(aTab, aChildrenList, aMayBeDuplicated, aOptions) { var childTabs = []; if (!aChildrenList) @@ -3491,7 +3453,8 @@ TreeStyleTabBrowser.prototype = { return childTabs; }, - _restoreTabPositionAndIndent : function TSTBrowser_restoreTabPositionAndIndent(aTab, aChildTabs, aMayBeDuplicated) + + _restoreTabPositionAndIndent : function TSTBrowser_restoreTabPositionAndIndent(aTab, aChildTabs, aMayBeDuplicated) { var restoringMultipleTabs = this.windowService.restoringTree; var position = this._prepareInsertionPosition(aTab, aMayBeDuplicated); @@ -3524,7 +3487,8 @@ TreeStyleTabBrowser.prototype = { this._restoreTabPosition(aTab, position.next); } }, - _prepareInsertionPosition : function TSTBrowser_prepareInsertionPosition(aTab, aMayBeDuplicated) + + _prepareInsertionPosition : function TSTBrowser_prepareInsertionPosition(aTab, aMayBeDuplicated) { var next = this.getTabValue(aTab, this.kINSERT_BEFORE); if (next && aMayBeDuplicated) next = this.redirectId(next); @@ -3567,7 +3531,8 @@ TreeStyleTabBrowser.prototype = { next : next }; }, - _restoreTabPosition : function TSTBrowser_restoreTabPosition(aTab, aNextTab) + + _restoreTabPosition : function TSTBrowser_restoreTabPosition(aTab, aNextTab) { if (!aNextTab) aNextTab = this.getNextTab(aTab); var parentOfNext = this.getParentTab(aNextTab); @@ -3583,7 +3548,7 @@ TreeStyleTabBrowser.prototype = { if (newPos > -1) this.mTabBrowser.moveTabTo(aTab, newPos); }, - + correctChildTabsOrderWithDelay : function TSTBrowser_correctChildTabsOrderWithDelay(aTab) { if (aTab.correctChildTabsOrderWithDelayTimer) @@ -3695,7 +3660,8 @@ TreeStyleTabBrowser.prototype = { this.doRestoreClosedSet(aRestoredTab, indexes); } }, - doRestoreClosedSet : function TSTBrowser_doRestoreClosedSet(aRestoredTab, aIndexes) + + doRestoreClosedSet : function TSTBrowser_doRestoreClosedSet(aRestoredTab, aIndexes) { if (!this.window.PlacesUIUtils._confirmOpenInTabs(aIndexes.length)) return; @@ -3719,7 +3685,7 @@ TreeStyleTabBrowser.prototype = { this._restoringClosedSet = false; }, _restoringClosedSet : false, - + onTabRestored : function TSTBrowser_onTabRestored(aEvent) { delete aEvent.originalTarget.__treestyletab__restoredByUndoCloseTab; @@ -3893,7 +3859,7 @@ TreeStyleTabBrowser.prototype = { this._autoExpandOnTabSelectTimer = null; } }, - + handleAdvanceSelectedTab : function TSTBrowser_handleAdvanceSelectedTab(aDir, aWrap) { this._focusChangedByShortcut = this.windowService.accelKeyPressed; @@ -3907,8 +3873,8 @@ TreeStyleTabBrowser.prototype = { return this.advanceSelectedTab(aDir, aWrap); }, - - processArrowKeyOnFocusAdvanced : function TSTBrowser_processArrowKeyOnFocusAdvanced() + + processArrowKeyOnFocusAdvanced : function TSTBrowser_processArrowKeyOnFocusAdvanced() { var event = this.windowService.arrowKeyEventOnTab; if (!event) @@ -3980,7 +3946,7 @@ TreeStyleTabBrowser.prototype = { return true; }, - advanceSelectedTab : function TSTBrowser_advanceSelectedTab(aDir, aWrap) + advanceSelectedTab : function TSTBrowser_advanceSelectedTab(aDir, aWrap) { var tab = this.mTabBrowser.selectedTab; var tabbar = this.mTabBrowser.mTabContainer; @@ -4000,7 +3966,7 @@ TreeStyleTabBrowser.prototype = { return true; }, - + onTabClick : function TSTBrowser_onTabClick(aEvent, aTab) { aTab = aTab || this.getTabFromEvent(aEvent); @@ -4033,29 +3999,6 @@ TreeStyleTabBrowser.prototype = { return; } }, - getTabFromTabbarEvent : function TSTBrowser_getTabFromTabbarEvent(aEvent) - { - if ( - !this.shouldDetectClickOnIndentSpaces || - !this.getAncestorTabbarFromEvent(aEvent) || - this.isEventFiredOnClickable(aEvent) || - this.getSplitterFromEvent(aEvent) - ) - return null; - - var tab = null; - var clickedPoint = aEvent[this.screenPositionProp]; - this.getTabsArray(this.mTabBrowser).some(function(aTab) { - var box = aTab.boxObject; - if (box[this.screenPositionProp] > clickedPoint || - box[this.screenPositionProp] + box[this.sizeProp] < clickedPoint) { - return false; - } - tab = aTab; - return true; - }, this); - return tab; - }, onClick : function TSTBrowser_onClick(aEvent) { @@ -4358,8 +4301,8 @@ TreeStyleTabBrowser.prototype = { this.resetTabState(aTab); this.updateTabsIndent([aTab], undefined, true); }, - - resetTabState : function TSTBrowser_resetTabState(aTab) + + resetTabState : function TSTBrowser_resetTabState(aTab) { aTab.removeAttribute(this.kID); aTab.removeAttribute(this.kID_RESTORING); @@ -4371,7 +4314,7 @@ TreeStyleTabBrowser.prototype = { aTab.removeAttribute(this.kNEST); this.updateTabCollapsed(aTab, false, true); }, - + resetAllTabs : function TSTBrowser_resetAllTabs(aDetachAllChildren) { this.getAllTabsArray(this.mTabBrowser).forEach(function(aTab) { @@ -5747,7 +5690,81 @@ TreeStyleTabBrowser.prototype = { this.scrollToTab(lastVisible); } }, - + + restoreTree : function TSTBrowser_restoreTree(aForceRestore) + { + if (!this.needRestoreTree && !aForceRestore) + return; + + this.needRestoreTree = false; + + if (!this.window.__SS_tabsToRestore || this.window.__SS_tabsToRestore <= 1) + return; + + var tabs = this.getAllTabsArray(this.mTabBrowser); + tabs = tabs.filter(function(aTab) { + if ( + !aTab.linkedBrowser.__SS_restoreState || + !aTab.linkedBrowser.__treestyletab__toBeRestored + ) + return false; + + var currentId = aTab.getAttribute(this.kID); + if (this.tabsHash[currentId] == aTab) + delete this.tabsHash[currentId]; + + this.resetTabState(aTab); + + var [id, duplicated] = this._restoreTabId(aTab); + + this.setTabValue(aTab, this.kID, id); + this.tabsHash[id] = aTab; + + aTab.__treestyletab__structureRestored = true; + aTab.__treestyletab__duplicated = duplicated; + + return true; + }, this); + + this.updateAllTabsIndent(true); + + // restore tree from bottom safely + tabs.reverse() + .filter(this.restoreOneTab, this) + .forEach(this.updateInsertionPositionInfo, this); + }, + restoreOneTab : function TSTBrowser_restoreOneTab(aTab) + { + let duplicated = aTab.__treestyletab__duplicated; + + let children = this.getTabValue(aTab, this.kCHILDREN); + if (children) { + this.deleteTabValue(aTab, this.kCHILDREN); + let subTreeCollapsed = this.getTabValue(aTab, this.kSUBTREE_COLLAPSED) == 'true'; + subTreeCollapsed = this._restoreSubtreeCollapsedState(aTab, subTreeCollapsed); + let self = this; + this._restoreChildTabsRelation(aTab, children, duplicated, function(aChild) { + /** + * When the child has the reference to the parent tab, attachTabTo() + * does nothing. To ensure they are correctly related, we have to + * clear the relation here. + */ + self.deleteTabValue(aChild, self.kPARENT); + let refId = self.getTabValue(aChild, self.kINSERT_BEFORE); + if (refId && duplicated) refId = self.redirectId(refId); + return { + forceExpand : true, // to prevent to collapse the selected tab + dontAnimate : true, + insertBefore : self.getTabById(refId) + }; + }); + this.collapseExpandSubtree(aTab, subTreeCollapsed, true); + } + + delete aTab.__treestyletab__duplicated; + return true + }, + /* sub modules */ get tabbarDNDObserver()