134
edits
No edit summary |
|||
Line 2: | Line 2: | ||
globals: | globals: | ||
tabs | |||
newTabButton | |||
newTabOffset := 0 | |||
openTab(url, options): | openTab(url, options): | ||
// opens a new tab with the provided url | |||
// default options: selected = true, position = end, opener = null | |||
openURLInNewTab(url, openerTab, selected): | openURLInNewTab(url, openerTab, selected): | ||
// triggered whenever a new tab is opened from a tab, | |||
// including window.open, link cmd+click, and context menu | |||
IF selected | |||
newTabOffset := 0 | |||
newTabOffset := newTabOffset + 1 | |||
position := openerTab.position + newTabOffset | |||
openTab(url, { selected : selected, position : position, opener : openerTab }) | |||
onTabClose(closedTab): | onTabClose(closedTab): | ||
FOR EACH tab IN tabs | |||
IF tab.opener = closedTab: | |||
tab.opener := closedTab.opener | |||
prev := closedTab.previousSibling | |||
next := closedTab.nextSibling | |||
IF next | IF !closedTab.opener | ||
selectTab(next) | |||
RETURN | |||
ELSE IF next AND next.opener = closedTab.opener | |||
selectTab(next) | |||
RETURN | |||
FOR tab := prev; tab; tab := tab.previousSibling | |||
IF tab.opener = closedTab.opener | |||
selectTab(tab) | |||
RETURN | |||
IF prev AND prev = closedTab.opener | |||
selectTab(prev) | |||
ELSE IF next | |||
selectTab(next) | |||
ELSE IF prev | |||
selectTab(prev) | |||
ELSE IF getBoolPref('closeWindowWithLastTab') | |||
closeWindow() | |||
ELSE | |||
openTab('about:blank') | |||
onTabSelect(fromTab, toTab): | onTabSelect(fromTab, toTab): | ||
newTabOffset := 0 | |||
IF !fromTab // triggered by tab close | |||
RETURN | |||
IF fromTab.opener != toTab AND toTab.opener != fromTab AND | |||
fromTab.opener != toTab.opener | |||
FOR EACH tab IN tabs: | |||
tab.opener := NULL | |||
onTabMove(fromIndex, toIndex): | onTabMove(fromIndex, toIndex): | ||
FOR EACH tab IN tabs | |||
tab.opener := NULL | |||
=== Phase II === | === Phase II === | ||
openBlankTab(trigger): | |||
// this method applies only to new blank tabs | |||
IF trigger = newTabButton | |||
openTab('about:blank') | |||
ELSE | |||
tab := contextTab OR selectedTab | |||
openTab('about:blank', { position : tab.position + 1, opener : tab }) |
edits