Line
Link Here
|
0 |
-- seamonkey-2.53.7/comm/suite/app/profile/suite-prefs.js |
0 |
++ seamonkey-2.53.7/comm/suite/app/profile/suite-prefs.js |
Lines 229-234
Link Here
|
229 |
pref("browser.tabs.maxOpenBeforeWarn", 15); |
229 |
pref("browser.tabs.maxOpenBeforeWarn", 15); |
230 |
pref("browser.tabs.insertRelatedAfterCurrent", true); |
230 |
pref("browser.tabs.insertRelatedAfterCurrent", true); |
231 |
pref("browser.tabs.insertAllTabsAfterCurrent", false); |
231 |
pref("browser.tabs.insertAllTabsAfterCurrent", false); |
|
|
232 |
pref("browser.tabs.selectOwnerOnClose", true); |
232 |
pref("browser.tabs.avoidBrowserFocus", false); |
233 |
pref("browser.tabs.avoidBrowserFocus", false); |
233 |
|
234 |
|
234 |
// For future use@@ -225,16 +225,17 @@ pref("browser.tabs.autoHide", false); |
235 |
// For future use@@ -225,16 +225,17 @@ pref("browser.tabs.autoHide", false); |
235 |
-- seamonkey-2.53.7/comm/suite/base/content/utilityOverlay.js |
236 |
++ seamonkey-2.53.7/comm/suite/base/content/utilityOverlay.js |
Lines 1624-1644
function openLinkIn(url, where, params)
Link Here
|
1624 |
// forces tab to be focused |
1624 |
// forces tab to be focused |
1625 |
loadInBackground = true; |
1625 |
loadInBackground = true; |
1626 |
// fall through |
1626 |
// fall through |
1627 |
case "tabshifted": |
1627 |
case "tabshifted": |
1628 |
loadInBackground = !loadInBackground; |
1628 |
loadInBackground = !loadInBackground; |
1629 |
// fall through |
1629 |
// fall through |
1630 |
case "tab": |
1630 |
case "tab": |
1631 |
var browser = w.getBrowser(); |
1631 |
var browser = w.getBrowser(); |
|
|
1632 |
var owner = loadInBackground ? null : browser.selectedTab; |
1632 |
var tab = browser.addTab(url, { |
1633 |
var tab = browser.addTab(url, { |
1633 |
referrerURI: aReferrerURI, |
1634 |
referrerURI: aReferrerURI, |
1634 |
referrerPolicy: aReferrerPolicy, |
1635 |
referrerPolicy: aReferrerPolicy, |
1635 |
charset: aCharset, |
1636 |
charset: aCharset, |
1636 |
postData: aPostData, |
1637 |
postData: aPostData, |
|
|
1638 |
ownerTab: owner, |
1637 |
allowThirdPartyFixup: aAllowThirdPartyFixup, |
1639 |
allowThirdPartyFixup: aAllowThirdPartyFixup, |
1638 |
relatedToCurrent: aRelatedToCurrent, |
1640 |
relatedToCurrent: aRelatedToCurrent, |
1639 |
allowMixedContent: aAllowMixedContent, |
1641 |
allowMixedContent: aAllowMixedContent, |
1640 |
noReferrer: aNoReferrer, |
1642 |
noReferrer: aNoReferrer, |
1641 |
userContextId: aUserContextId, |
1643 |
userContextId: aUserContextId, |
1642 |
originPrincipal: aPrincipal, |
1644 |
originPrincipal: aPrincipal, |
1643 |
triggeringPrincipal: aTriggeringPrincipal, |
1645 |
triggeringPrincipal: aTriggeringPrincipal, |
1644 |
}); |
1646 |
}); |
1645 |
-- seamonkey-2.53.7/comm/suite/browser/tabbrowser.xml |
1647 |
++ seamonkey-2.53.7/comm/suite/browser/tabbrowser.xml |
Lines 1151-1166
Link Here
|
1151 |
newBrowser.docShellIsActive = this.mCurrentTab.linkedBrowser.docShellIsActive; |
1151 |
newBrowser.docShellIsActive = this.mCurrentTab.linkedBrowser.docShellIsActive; |
1152 |
if (this.mCurrentBrowser) { |
1152 |
if (this.mCurrentBrowser) { |
1153 |
this.mCurrentBrowser.droppedLinkHandler = null; |
1153 |
this.mCurrentBrowser.droppedLinkHandler = null; |
1154 |
this.mCurrentBrowser.docShellIsActive = false; |
1154 |
this.mCurrentBrowser.docShellIsActive = false; |
1155 |
this.mCurrentBrowser.removeAttribute("primary"); |
1155 |
this.mCurrentBrowser.removeAttribute("primary"); |
1156 |
this.finder.mListeners.forEach(l => this.mCurrentBrowser.finder.removeResultListener(l)); |
1156 |
this.finder.mListeners.forEach(l => this.mCurrentBrowser.finder.removeResultListener(l)); |
1157 |
} |
1157 |
} |
1158 |
|
1158 |
|
|
|
1159 |
var oldTab = this.mCurrentTab; |
1160 |
|
1161 |
// Preview mode should not reset the owner |
1162 |
if (!this._previewMode && !oldTab.selected) |
1163 |
oldTab.owner = null; |
1164 |
|
1165 |
let lastRelatedTab = this.mLastRelatedIndex ? this.tabs[this.mLastRelatedIndex] : null; |
1166 |
if (lastRelatedTab) { |
1167 |
if (!lastRelatedTab.selected) |
1168 |
lastRelatedTab.owner = null; |
1169 |
} |
1170 |
|
1159 |
newBrowser.setAttribute("primary", "true"); |
1171 |
newBrowser.setAttribute("primary", "true"); |
1160 |
this.mCurrentBrowser = newBrowser; |
1172 |
this.mCurrentBrowser = newBrowser; |
1161 |
this.mCurrentTab = this.selectedTab; |
1173 |
this.mCurrentTab = this.selectedTab; |
1162 |
this.mCurrentTab.removeAttribute("unread"); |
1174 |
this.mCurrentTab.removeAttribute("unread"); |
1163 |
this.finder.mListeners.forEach(l => this.mCurrentBrowser.finder.addResultListener(l)); |
1175 |
this.finder.mListeners.forEach(l => this.mCurrentBrowser.finder.addResultListener(l)); |
1164 |
|
1176 |
|
1165 |
var tabListener = this.mTabListeners[this.tabContainer.selectedIndex]; |
1177 |
var tabListener = this.mTabListeners[this.tabContainer.selectedIndex]; |
1166 |
|
1178 |
|
Lines 1445-1460
Link Here
|
1445 |
opener: null, |
1457 |
opener: null, |
1446 |
}; |
1458 |
}; |
1447 |
} |
1459 |
} |
1448 |
|
1460 |
|
1449 |
params.focusNewTab = params.inBackground != null ? |
1461 |
params.focusNewTab = params.inBackground != null ? |
1450 |
!params.inBackground : |
1462 |
!params.inBackground : |
1451 |
!Services.prefs.getBoolPref("browser.tabs.loadInBackground"); |
1463 |
!Services.prefs.getBoolPref("browser.tabs.loadInBackground"); |
1452 |
|
1464 |
|
|
|
1465 |
if (params.focusNewTab) |
1466 |
params.ownerTab = this.selectedTab; |
1467 |
|
1453 |
return this.addTab(aURI, params); |
1468 |
return this.addTab(aURI, params); |
1454 |
]]> |
1469 |
]]> |
1455 |
</body> |
1470 |
</body> |
1456 |
</method> |
1471 |
</method> |
1457 |
|
1472 |
|
1458 |
<method name="loadTabs"> |
1473 |
<method name="loadTabs"> |
1459 |
<parameter name="aURIs"/> |
1474 |
<parameter name="aURIs"/> |
1460 |
<parameter name="aLoadInBackground"/> |
1475 |
<parameter name="aLoadInBackground"/> |
Lines 1556-1598
Link Here
|
1556 |
<parameter name="aPostData"/> |
1571 |
<parameter name="aPostData"/> |
1557 |
<parameter name="aFocusNewTab"/> |
1572 |
<parameter name="aFocusNewTab"/> |
1558 |
<parameter name="aAllowThirdPartyFixup"/> |
1573 |
<parameter name="aAllowThirdPartyFixup"/> |
1559 |
<body> |
1574 |
<body> |
1560 |
<![CDATA[ |
1575 |
<![CDATA[ |
1561 |
var aTriggeringPrincipal; |
1576 |
var aTriggeringPrincipal; |
1562 |
var aReferrerPolicy; |
1577 |
var aReferrerPolicy; |
1563 |
var aFromExternal; |
1578 |
var aFromExternal; |
|
|
1579 |
var aOwner; |
1564 |
var aRelatedToCurrent; |
1580 |
var aRelatedToCurrent; |
1565 |
var aAllowMixedContent; |
1581 |
var aAllowMixedContent; |
1566 |
var aNoReferrer; |
1582 |
var aNoReferrer; |
1567 |
var aUserContextId; |
1583 |
var aUserContextId; |
1568 |
var aOriginPrincipal; |
1584 |
var aOriginPrincipal; |
1569 |
var aOpener; |
1585 |
var aOpener; |
1570 |
if (arguments.length == 2 && |
1586 |
if (arguments.length == 2 && |
1571 |
arguments[1] != null && |
1587 |
arguments[1] != null && |
1572 |
typeof arguments[1] == "object" && |
1588 |
typeof arguments[1] == "object" && |
1573 |
!(arguments[1] instanceof Ci.nsIURI)) { |
1589 |
!(arguments[1] instanceof Ci.nsIURI)) { |
1574 |
let params = arguments[1]; |
1590 |
let params = arguments[1]; |
1575 |
aTriggeringPrincipal = params.triggeringPrincipal; |
1591 |
aTriggeringPrincipal = params.triggeringPrincipal; |
1576 |
aReferrerURI = params.referrerURI; |
1592 |
aReferrerURI = params.referrerURI; |
1577 |
aReferrerPolicy = params.referrerPolicy; |
1593 |
aReferrerPolicy = params.referrerPolicy; |
1578 |
aCharset = params.charset; |
1594 |
aCharset = params.charset; |
1579 |
aPostData = params.postData; |
1595 |
aPostData = params.postData; |
|
|
1596 |
aOwner = params.ownerTab; |
1580 |
aFocusNewTab = params.focusNewTab; |
1597 |
aFocusNewTab = params.focusNewTab; |
1581 |
aAllowThirdPartyFixup = params.allowThirdPartyFixup; |
1598 |
aAllowThirdPartyFixup = params.allowThirdPartyFixup; |
1582 |
aFromExternal = params.fromExternal; |
1599 |
aFromExternal = params.fromExternal; |
1583 |
aRelatedToCurrent = params.relatedToCurrent; |
1600 |
aRelatedToCurrent = params.relatedToCurrent; |
1584 |
aAllowMixedContent = params.allowMixedContent; |
1601 |
aAllowMixedContent = params.allowMixedContent; |
1585 |
aNoReferrer = params.noReferrer; |
1602 |
aNoReferrer = params.noReferrer; |
1586 |
aUserContextId = params.userContextId; |
1603 |
aUserContextId = params.userContextId; |
1587 |
aOriginPrincipal = params.originPrincipal; |
1604 |
aOriginPrincipal = params.originPrincipal; |
1588 |
aOpener = params.opener; |
1605 |
aOpener = params.opener; |
1589 |
} |
1606 |
} |
1590 |
|
1607 |
|
|
|
1608 |
// if we're adding tabs, we're past interrupt mode, ditch the owner |
1609 |
if (this.mCurrentTab.owner) |
1610 |
this.mCurrentTab.owner = null; |
1611 |
|
1591 |
this._browsers = null; // invalidate cache |
1612 |
this._browsers = null; // invalidate cache |
1592 |
|
1613 |
|
1593 |
var t = this.referenceTab.cloneNode(true); |
1614 |
var t = this.referenceTab.cloneNode(true); |
1594 |
|
1615 |
|
1595 |
var blank = !aURI || aURI == "about:blank"; |
1616 |
var blank = !aURI || aURI == "about:blank"; |
1596 |
|
1617 |
|
1597 |
if (!blank) |
1618 |
if (!blank) |
1598 |
t.setAttribute("label", aURI); |
1619 |
t.setAttribute("label", aURI); |
Lines 1640-1655
Link Here
|
1640 |
|
1661 |
|
1641 |
// We start our browsers out as inactive. |
1662 |
// We start our browsers out as inactive. |
1642 |
b.docShellIsActive = false; |
1663 |
b.docShellIsActive = false; |
1643 |
|
1664 |
|
1644 |
this.mStrip.collapsed = false; |
1665 |
this.mStrip.collapsed = false; |
1645 |
|
1666 |
|
1646 |
Services.prefs.setBoolPref("browser.tabs.forceHide", false); |
1667 |
Services.prefs.setBoolPref("browser.tabs.forceHide", false); |
1647 |
|
1668 |
|
|
|
1669 |
// If this new tab is owned by another, assert that relationship |
1670 |
if (aOwner) |
1671 |
t.owner = aOwner; |
1672 |
|
1648 |
// wire up a progress listener for the new browser object. |
1673 |
// wire up a progress listener for the new browser object. |
1649 |
var position = this.tabs.length - 1; |
1674 |
var position = this.tabs.length - 1; |
1650 |
var tabListener = this.mTabProgressListener(t, b, blank); |
1675 |
var tabListener = this.mTabProgressListener(t, b, blank); |
1651 |
const filter = Cc["@mozilla.org/appshell/component/browser-status-filter;1"] |
1676 |
const filter = Cc["@mozilla.org/appshell/component/browser-status-filter;1"] |
1652 |
.createInstance(Ci.nsIWebProgress); |
1677 |
.createInstance(Ci.nsIWebProgress); |
1653 |
filter.addProgressListener(tabListener, Ci.nsIWebProgress.NOTIFY_ALL); |
1678 |
filter.addProgressListener(tabListener, Ci.nsIWebProgress.NOTIFY_ALL); |
1654 |
b.webProgress.addProgressListener(filter, Ci.nsIWebProgress.NOTIFY_ALL); |
1679 |
b.webProgress.addProgressListener(filter, Ci.nsIWebProgress.NOTIFY_ALL); |
1655 |
this.mTabListeners[position] = tabListener; |
1680 |
this.mTabListeners[position] = tabListener; |
Lines 1689-1704
Link Here
|
1689 |
// aReferrerURI is null or undefined if the tab is opened from |
1714 |
// aReferrerURI is null or undefined if the tab is opened from |
1690 |
// an external application or bookmark, i.e. somewhere other |
1715 |
// an external application or bookmark, i.e. somewhere other |
1691 |
// than the current tab. |
1716 |
// than the current tab. |
1692 |
if ((aRelatedToCurrent || aReferrerURI || |
1717 |
if ((aRelatedToCurrent || aReferrerURI || |
1693 |
Services.prefs.getBoolPref("browser.tabs.insertAllTabsAfterCurrent")) && |
1718 |
Services.prefs.getBoolPref("browser.tabs.insertAllTabsAfterCurrent")) && |
1694 |
Services.prefs.getBoolPref("browser.tabs.insertRelatedAfterCurrent")) { |
1719 |
Services.prefs.getBoolPref("browser.tabs.insertRelatedAfterCurrent")) { |
1695 |
var lastRelatedIndex = this.mLastRelatedIndex || |
1720 |
var lastRelatedIndex = this.mLastRelatedIndex || |
1696 |
this.tabContainer.selectedIndex; |
1721 |
this.tabContainer.selectedIndex; |
|
|
1722 |
if (this.mLastRelatedIndex) |
1723 |
this.tabs[this.mLastRelatedIndex].owner = null; |
1724 |
else |
1725 |
t.owner = this.selectedTab; |
1697 |
this.moveTabTo(t, ++lastRelatedIndex); |
1726 |
this.moveTabTo(t, ++lastRelatedIndex); |
1698 |
this.mLastRelatedIndex = lastRelatedIndex; |
1727 |
this.mLastRelatedIndex = lastRelatedIndex; |
1699 |
} |
1728 |
} |
1700 |
|
1729 |
|
1701 |
if (aFocusNewTab) { |
1730 |
if (aFocusNewTab) { |
1702 |
var parentTab = this.selectedTab; |
1731 |
var parentTab = this.selectedTab; |
1703 |
this.selectedTab = t; |
1732 |
this.selectedTab = t; |
1704 |
this.mPreviousTab = parentTab; |
1733 |
this.mPreviousTab = parentTab; |
Lines 2007-2022
Link Here
|
2007 |
oldBrowser.webProgress.removeProgressListener(filter); |
2036 |
oldBrowser.webProgress.removeProgressListener(filter); |
2008 |
filter.removeProgressListener(this.mTabListeners[index]); |
2037 |
filter.removeProgressListener(this.mTabListeners[index]); |
2009 |
this.mTabFilters.splice(index, 1); |
2038 |
this.mTabFilters.splice(index, 1); |
2010 |
this.mTabListeners.splice(index, 1); |
2039 |
this.mTabListeners.splice(index, 1); |
2011 |
|
2040 |
|
2012 |
// We are no longer the primary content area |
2041 |
// We are no longer the primary content area |
2013 |
oldBrowser.removeAttribute("primary"); |
2042 |
oldBrowser.removeAttribute("primary"); |
2014 |
|
2043 |
|
|
|
2044 |
// Remove this tab as the owner of any other tabs, since it's going away. |
2045 |
for (let tab of this.tabs) { |
2046 |
if ("owner" in tab && tab.owner == aTab) |
2047 |
// |tab| is a child of the tab we're removing, make it an orphan |
2048 |
tab.owner = null; |
2049 |
} |
2050 |
|
2015 |
// Now select the new tab before nuking the old one. |
2051 |
// Now select the new tab before nuking the old one. |
2016 |
var currentIndex = this.tabContainer.selectedIndex; |
2052 |
var currentIndex = this.tabContainer.selectedIndex; |
2017 |
|
2053 |
|
2018 |
var newIndex = -1; |
2054 |
var newIndex = -1; |
2019 |
if (currentIndex > index) |
2055 |
if (currentIndex > index) |
2020 |
newIndex = currentIndex - 1; |
2056 |
newIndex = currentIndex - 1; |
2021 |
else if (currentIndex < index) |
2057 |
else if (currentIndex < index) |
2022 |
newIndex = currentIndex; |
2058 |
newIndex = currentIndex; |
Lines 2033-2049
Link Here
|
2033 |
this._browsers = null; |
2069 |
this._browsers = null; |
2034 |
|
2070 |
|
2035 |
// Clean up before/afterselected attributes before removing the tab |
2071 |
// Clean up before/afterselected attributes before removing the tab |
2036 |
aTab._selected = false; |
2072 |
aTab._selected = false; |
2037 |
aTab.remove(); |
2073 |
aTab.remove(); |
2038 |
|
2074 |
|
2039 |
// When the current tab is removed select a new tab |
2075 |
// When the current tab is removed select a new tab |
2040 |
// and fire select events on tabpanels and tabs |
2076 |
// and fire select events on tabpanels and tabs |
2041 |
if (this.mPreviousTab && (aTab == this.mCurrentTab)) |
2077 |
if (aTab.owner && !aTab.owner.hidden && !aTab.owner.closing && |
|
|
2078 |
Services.prefs.getBoolPref("browser.tabs.selectOwnerOnClose")) { |
2079 |
this.selectedTab = aTab.owner; |
2080 |
} |
2081 |
else if (this.mPreviousTab && (aTab == this.mCurrentTab)) |
2042 |
this.selectedTab = this.mPreviousTab; |
2082 |
this.selectedTab = this.mPreviousTab; |
2043 |
else { |
2083 |
else { |
2044 |
this.tabContainer.selectedIndex = newIndex; |
2084 |
this.tabContainer.selectedIndex = newIndex; |
2045 |
|
2085 |
|
2046 |
// We need to explicitly clear this, because updateCurrentBrowser |
2086 |
// We need to explicitly clear this, because updateCurrentBrowser |
2047 |
// doesn't get called for a background tab |
2087 |
// doesn't get called for a background tab |
2048 |
this.mPreviousTab = null; |
2088 |
this.mPreviousTab = null; |
2049 |
} |
2089 |
} |