[Pkg-mozext-commits] [tabmixplus] 09/19: Follow up bug 1238314 - Implement browser.tabs opener functionality
David Prévot
taffit at moszumanska.debian.org
Tue Aug 29 08:05:14 UTC 2017
This is an automated email from the git hooks/post-receive script.
taffit pushed a commit to branch master
in repository tabmixplus.
commit 28eb6ec737fa2eaa7af9ce40b4e058252a385d58
Author: onemen <tabmix.onemen at gmail.com>
Date: Fri Aug 25 19:38:11 2017 +0300
Follow up bug 1238314 - Implement browser.tabs opener functionality
---
chrome/content/minit/tablib.js | 51 +++++++++++++++++++++++++++++-------------
1 file changed, 35 insertions(+), 16 deletions(-)
diff --git a/chrome/content/minit/tablib.js b/chrome/content/minit/tablib.js
index 23bbb06..ab0f28f 100644
--- a/chrome/content/minit/tablib.js
+++ b/chrome/content/minit/tablib.js
@@ -161,10 +161,7 @@ Tabmix.tablib = {
let dontMove, isPending, referrerURI, relatedToCurrent = null,
callerTrace = Tabmix.callerTrace(),
isRestoringTab = callerTrace.contain("ssi_restoreWindow"),
- // new tab can trigger selection change by some extensions (divX HiQ)
- // see use below
- selectedTab = this.selectedTab,
- lastRelatedTab = this._lastRelatedTab;
+ openerBrowser;
// we prevents the original function from moving the new tab by setting
// params.relatedToCurrent to false
@@ -178,7 +175,6 @@ Tabmix.tablib = {
postData: args[3],
ownerTab: args[4],
allowThirdPartyFixup: args[5],
- relatedToCurrent: false
};
let uri = args[0];
args = [uri, params];
@@ -189,45 +185,68 @@ Tabmix.tablib = {
isPending = params.isPending;
referrerURI = params.referrerURI;
relatedToCurrent = params.relatedToCurrent || null;
- params.relatedToCurrent = false;
+ openerBrowser = params.openerBrowser;
args[1] = params;
}
+ if (relatedToCurrent === null) {
+ relatedToCurrent = Boolean(referrerURI);
+ }
+ let insertRelatedAfterCurrent = Services.prefs.getBoolPref("browser.tabs.insertRelatedAfterCurrent");
+ if (insertRelatedAfterCurrent) {
+ Services.prefs.setBoolPref("browser.tabs.insertRelatedAfterCurrent", false);
+ }
+
let openTabnext = Tabmix.prefs.getBoolPref("openTabNext");
if (openTabnext) {
let dontMoveNewTab = dontMove ||
callerTrace.contain("ssi_restoreWindow", "ssi_duplicateTab");
if (dontMoveNewTab) {
openTabnext = false;
- } else if (!Services.prefs.getBoolPref("browser.tabs.insertRelatedAfterCurrent")) {
+ } else if (!insertRelatedAfterCurrent) {
relatedToCurrent = true;
}
- let checkToOpenTabNext = (relatedToCurrent === null ? referrerURI : relatedToCurrent) && openTabnext;
+ let checkToOpenTabNext = openTabnext && relatedToCurrent;
TMP_extensionsCompatibility.treeStyleTab.checkToOpenTabNext(this.selectedTab, checkToOpenTabNext);
}
+ // new tab can trigger selection change by some extensions (divX HiQ)
+ // we save current state before adding the new tab
+ let selectedTab = this.selectedTab;
+ let openerTab = openerBrowser && this.getTabForBrowser(openerBrowser) ||
+ relatedToCurrent && selectedTab;
+ let lastRelatedTab = Tabmix.isVersion(570) ?
+ this._lastRelatedTabMap.get(openerTab) : this._lastRelatedTab;
+
// we use var here to allow other extensions that wrap our code with
// try-catch-finally to have access to 't' outside of the current scope
// (see https://addons.mozilla.org/en-US/firefox/addon/mclickfocustab/)
var t = Tabmix.originalFunctions.gBrowser_addTab.apply(this, args);
+ if (insertRelatedAfterCurrent) {
+ Services.prefs.setBoolPref("browser.tabs.insertRelatedAfterCurrent", true);
+ }
+
if (isPending || isRestoringTab &&
Services.prefs.getBoolPref("browser.sessionstore.restore_on_demand")) {
t.setAttribute("tabmix_pending", "true");
}
- if ((relatedToCurrent === null ? referrerURI : relatedToCurrent) &&
- openTabnext) {
- let newTabPos = (this._lastRelatedTab || selectedTab)._tPos + 1;
- if (this._lastRelatedTab) {
- this._lastRelatedTab.owner = null;
+ if (relatedToCurrent && openTabnext) {
+ let newTabPos = (lastRelatedTab || openerTab)._tPos + 1;
+ if (lastRelatedTab) {
+ lastRelatedTab.owner = null;
} else {
- t.owner = selectedTab;
+ t.owner = openerTab;
}
- this.moveTabTo(t, newTabPos);
+ this.moveTabTo(t, newTabPos, true);
if (Tabmix.prefs.getBoolPref("openTabNextInverse")) {
TMP_LastTab.attachTab(t, lastRelatedTab);
- this._lastRelatedTab = t;
+ if (Tabmix.isVersion(570)) {
+ this._lastRelatedTabMap.set(openerTab, t);
+ } else {
+ this._lastRelatedTab = t;
+ }
}
}
return t;
--
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-mozext/tabmixplus.git
More information about the Pkg-mozext-commits
mailing list