User:Fyan/Improving Tab Hierarchy

From MozillaWiki
Revision as of 00:36, 13 July 2010 by Fyan (talk | contribs) (→‎Phase I)
Jump to navigation Jump to search

Phase I

onOpenLinkInNewTab(newTab, openerTab):

   // triggered whenever a new tab is opened from a tab,
   // including window.open, link cmd+click, and context menu
   newTab.opener := openerTab

onTabClose(closedTab):

   FOR EACH tab IN tabs:
       IF tab.opener = closedTab:
           tab.opener := closedTab.opener
   prev := closedTab.prevSibling
   next := closedTab.nextSibling
   IF next AND next.opener AND next.opener = closedTab.opener:
       selectTab(next)
   ELSE IF prev AND prev.opener AND prev.opener = closedTab.opener:
       selectTab(prev)
   ELSE IF prev AND prev = closedTab.opener:
       selectTab(prev)
   ELSE IF next:
       selectTab(next)
   ELSE IF prev:
       selectTab(prev)
   ELSE IF pref('closeWindowWithLastTab'):
       closeWindow()
   ELSE:
       openTab('about:blank')

onTabSelect(fromTab, toTab):

   IF fromTab.opener = toTab OR
      toTab.opener = fromTab OR
      fromTab.opener = toTab.opener:
       RETURN
   ELSE:
       FOR EACH tab IN tabs:
           tab.opener := NULL

onTabMove():

   FOR EACH tab IN tabs:
       tab.opener := NULL

Phase II

openNewTab(newTab, trigger):

   IF trigger = newTabButton:
       openTab('about:blank')
   ELSE:
       tab := contextTab OR selectedTab
       openTab('about:blank', { opener : tab, position : tab.position + 1 })