[Pkg-mozext-commits] [tabmixplus] 02/06: Imported Upstream version 0.4.2.3~160328a1
David Prévot
taffit at moszumanska.debian.org
Sat Apr 2 01:55:37 UTC 2016
This is an automated email from the git hooks/post-receive script.
taffit pushed a commit to branch master
in repository tabmixplus.
commit 8165710eb5b6fa25b6033db0bc9dd1ad87bff650
Author: David Prévot <david at tilapin.org>
Date: Fri Apr 1 21:46:19 2016 -0400
Imported Upstream version 0.4.2.3~160328a1
---
META-INF/manifest.mf | 136 ++++++++++-----------
META-INF/mozilla.rsa | Bin 4197 -> 4197 bytes
META-INF/mozilla.sf | 4 +-
chrome/content/about.js | 2 +-
chrome/content/changecode.js | 2 -
chrome/content/click/click.js | 25 +---
chrome/content/content.js | 37 +++---
chrome/content/extensions/extensions.js | 45 ++++++-
chrome/content/links/setup.js | 2 +-
chrome/content/links/userInterface.js | 12 +-
chrome/content/minit/minit.js | 15 ++-
chrome/content/minit/tablib.js | 68 ++++++-----
chrome/content/overlay/browsr.css | 5 -
chrome/content/overlay/firefox.css | 6 +
chrome/content/places/places.js | 15 +--
chrome/content/preferences/appearance.js | 2 +-
chrome/content/preferences/menu.js | 2 +-
.../preferences/overlay/preferencesOverlay.js | 2 +-
chrome/content/preferences/preferences.js | 5 +-
chrome/content/preferences/session.xul | 6 -
.../preferences/subdialogs/pref-appearance.js | 2 +-
chrome/content/session/sessionStore.js | 6 +-
chrome/content/tab/tab.js | 19 ++-
chrome/content/tabmix.js | 9 +-
chrome/content/utils.js | 4 +-
install.rdf | 2 +-
modules/AsyncUtils.jsm | 1 -
modules/ContentClick.jsm | 5 -
modules/ContextMenu.jsm | 10 +-
modules/DocShellCapabilities.jsm | 7 +-
modules/DownloadLastDir.jsm | 1 -
modules/DynamicRules.jsm | 2 +-
modules/MergeWindows.jsm | 2 +-
modules/Places.jsm | 4 +-
modules/Services.jsm | 2 -
modules/Utils.jsm | 11 +-
modules/log.jsm | 32 +++--
37 files changed, 268 insertions(+), 242 deletions(-)
diff --git a/META-INF/manifest.mf b/META-INF/manifest.mf
index 861d679..3e79260 100644
--- a/META-INF/manifest.mf
+++ b/META-INF/manifest.mf
@@ -2,8 +2,8 @@ Manifest-Version: 1.0
Name: install.rdf
Digest-Algorithms: MD5 SHA1
-MD5-Digest: MkERX021fz/gShvnP444cQ==
-SHA1-Digest: BYbEW61uLawQ6BIWbh0ZQvYzS10=
+MD5-Digest: UV7csCcDLmkIJtiRrQqqXw==
+SHA1-Digest: X8HgZwQxIhSZQbE2/RlhJS16Mbc=
Name: chrome.manifest
Digest-Algorithms: MD5 SHA1
@@ -17,8 +17,8 @@ SHA1-Digest: aaPMHbdPTp3/ql/+iZOQyq+W2AY=
Name: chrome/content/about.js
Digest-Algorithms: MD5 SHA1
-MD5-Digest: 83Lg2kxAjlTKC8mElKyaWg==
-SHA1-Digest: UZQrXQNElYjqwkkGCRP/P8SHRdo=
+MD5-Digest: XZHfVU4huHWt6TBrmx6jmw==
+SHA1-Digest: vEokekw78gvtBUiNQmlbX4Yjotc=
Name: chrome/content/about.xul
Digest-Algorithms: MD5 SHA1
@@ -27,18 +27,18 @@ SHA1-Digest: wrWOq6BcK6feX+a7Gge2ScBfrvA=
Name: chrome/content/changecode.js
Digest-Algorithms: MD5 SHA1
-MD5-Digest: dFzpml1jlHc5W8L6OhnYKg==
-SHA1-Digest: Itda6g73nhrqHAVV7Xit91H66Co=
+MD5-Digest: oD+p4J+5bQ7Z6qHvKINtcQ==
+SHA1-Digest: BPSLBjX+sifBeaLn9n2JTYRfLM0=
Name: chrome/content/content.js
Digest-Algorithms: MD5 SHA1
-MD5-Digest: oTrdq6vEXqFJgg6JtIOriw==
-SHA1-Digest: JgH48HuRAKyQ9QI+EDtoeSe+LNw=
+MD5-Digest: kd/px7UZLFp3Gamr85AhBA==
+SHA1-Digest: G9UkgLbphWAv9DRNIZ6251W6Wn0=
Name: chrome/content/tabmix.js
Digest-Algorithms: MD5 SHA1
-MD5-Digest: pIpE+ESpDB8DFOra9Zkf8A==
-SHA1-Digest: /Onl/birq3Mcqw1s5g7cQ/vi3sA=
+MD5-Digest: Dk7TmyoTUzNIkw0ndhrs+w==
+SHA1-Digest: ZJaiXk+vHK0RU+e8ebQ2eUiwQtw=
Name: chrome/content/tabmix.xul
Digest-Algorithms: MD5 SHA1
@@ -47,18 +47,18 @@ SHA1-Digest: WC4Zo3WjmwipyGR7nJ6Y5be4TyE=
Name: chrome/content/utils.js
Digest-Algorithms: MD5 SHA1
-MD5-Digest: gSbNE0/DW83t1xbEUzMUAg==
-SHA1-Digest: uhwrTzI9FAO7Vb7tP4tGsuE1Woo=
+MD5-Digest: fRKuIl3nvSXY+nWu3Y1OgA==
+SHA1-Digest: GS1E6vuApRC9juPfpDAEk0SIMeQ=
Name: chrome/content/click/click.js
Digest-Algorithms: MD5 SHA1
-MD5-Digest: Wr4Ah30GNr2mVECIy6BwmA==
-SHA1-Digest: GPubRvGl1LEH9g6wnLXUn2Dl9Lw=
+MD5-Digest: 64BexxcwN5eBPhN3iPj9ww==
+SHA1-Digest: 6gs2665MMFdwmYlhXaQa3ZmbObM=
Name: chrome/content/extensions/extensions.js
Digest-Algorithms: MD5 SHA1
-MD5-Digest: FWrjTzeVc8o9bbe7jHSH6w==
-SHA1-Digest: CRI8Ivgn5qxlLHe1nV8/pWe7yjs=
+MD5-Digest: yYZSyz5iqMneAkyCDRVjkw==
+SHA1-Digest: ChTrrIgwjmNzs9o+IaH7QF02vss=
Name: chrome/content/extensions/sage.js
Digest-Algorithms: MD5 SHA1
@@ -112,13 +112,13 @@ SHA1-Digest: vbFhd3PAqXDQX+bhbnRqePKsrCE=
Name: chrome/content/links/setup.js
Digest-Algorithms: MD5 SHA1
-MD5-Digest: c7QYdZz4zxEKpKgdM6bMwQ==
-SHA1-Digest: kKCN29CQYkVPY6P6olm/hOpW0UI=
+MD5-Digest: FSjS/Tf5UWnM8ii8VGJdhA==
+SHA1-Digest: hoHhN1aAIlzKnJFBnzAg21yhRo0=
Name: chrome/content/links/userInterface.js
Digest-Algorithms: MD5 SHA1
-MD5-Digest: JzAlqt4E1ciJmFoiU0ZDBg==
-SHA1-Digest: OuCOcYU1oHAIh6M3xChkmynMPrk=
+MD5-Digest: vSZ9pup/F7YYv+aR5HHpoA==
+SHA1-Digest: iWNet+/+72ckT8YBUgKn6/XCzYk=
Name: chrome/content/minit/autoReload.js
Digest-Algorithms: MD5 SHA1
@@ -132,8 +132,8 @@ SHA1-Digest: TEE8UGoirwpmJxC0fi/GdQ4Jt/Y=
Name: chrome/content/minit/minit.js
Digest-Algorithms: MD5 SHA1
-MD5-Digest: KkOJGhjq/EvQyH29XlGzgw==
-SHA1-Digest: LXG8hJHphGX0xihieboCxTM5tK8=
+MD5-Digest: W7qcKqPnDkXGfZcVxXvPgQ==
+SHA1-Digest: BmIZN3dX9b19rQVZ1rwAV+AgUCo=
Name: chrome/content/minit/renameTab.xul
Digest-Algorithms: MD5 SHA1
@@ -142,8 +142,8 @@ SHA1-Digest: Xx80yx7tHvPsdU+E4zjnaWxSHR4=
Name: chrome/content/minit/tablib.js
Digest-Algorithms: MD5 SHA1
-MD5-Digest: UWrur/r+gFhqM0KqlHBghw==
-SHA1-Digest: 9dqIETH+mbaS4BcXLWriN6pAXAU=
+MD5-Digest: ew094b+2KyJULacRrU+y3Q==
+SHA1-Digest: Oyh+LMPF1kx7g/1gcq6LWfYC088=
Name: chrome/content/minit/tabView.js
Digest-Algorithms: MD5 SHA1
@@ -152,13 +152,13 @@ SHA1-Digest: UeVtsgv0xKO/t20o3bEmA7v9NKM=
Name: chrome/content/overlay/browsr.css
Digest-Algorithms: MD5 SHA1
-MD5-Digest: ZLY8QIH0g79B0VKVo9KHbg==
-SHA1-Digest: HV3/hix8Y0IQPPqnOaSZSioDByA=
+MD5-Digest: vW5CG7bKuIoSo5QLt2Tn0w==
+SHA1-Digest: qg4KTMCNnsUHh6zvIm58Z+gCIT0=
Name: chrome/content/overlay/firefox.css
Digest-Algorithms: MD5 SHA1
-MD5-Digest: ulyeqJ0X4tQFg/wy3AuJXg==
-SHA1-Digest: DLYmg32hnLBE/bCK/ceU2ZdAtrw=
+MD5-Digest: EImd0NuhmfyypVMaRBMa/A==
+SHA1-Digest: j+/s4HsLMUI0WlQJSQbn3fv1rdA=
Name: chrome/content/overlay/palemoon.css
Digest-Algorithms: MD5 SHA1
@@ -182,8 +182,8 @@ SHA1-Digest: EMkKp+FCu75LoR0gdTn1Aia6N6w=
Name: chrome/content/places/places.js
Digest-Algorithms: MD5 SHA1
-MD5-Digest: MfJEtJd0aLzUvFHsJNOoxw==
-SHA1-Digest: 7IgHR60pw9enfOHJ1toh77MjciY=
+MD5-Digest: rnD62wm2vZ0o3zRdMcp9Mg==
+SHA1-Digest: tk2JIx3SYVf7KJP0n3SdjCqpYL0=
Name: chrome/content/places/places.xul
Digest-Algorithms: MD5 SHA1
@@ -192,8 +192,8 @@ SHA1-Digest: qyhy6qeWeszXRe2D+1PHJn3ScK0=
Name: chrome/content/preferences/appearance.js
Digest-Algorithms: MD5 SHA1
-MD5-Digest: fsrL1f8fbw37ZstbvMjGMQ==
-SHA1-Digest: mdwTIs3IQ8lzaXoLMtdratRME/A=
+MD5-Digest: mLupviFZirntanJmgJtXzw==
+SHA1-Digest: i5tuxMr4AzoXXQYopxIlTrvdYcE=
Name: chrome/content/preferences/appearance.xul
Digest-Algorithms: MD5 SHA1
@@ -232,8 +232,8 @@ SHA1-Digest: 1HMOx2qZnzoyH63fbz6F0/Qs7lM=
Name: chrome/content/preferences/menu.js
Digest-Algorithms: MD5 SHA1
-MD5-Digest: YkfYPAWqUh8/eNZcZXrwYg==
-SHA1-Digest: 7CVcIaWjEwhoaXiQFGRNgXzbs60=
+MD5-Digest: eGenHoBPgm+R35leLnpyww==
+SHA1-Digest: O/6zYmLNO0+ta+xW5VhuARdCOdo=
Name: chrome/content/preferences/menu.xul
Digest-Algorithms: MD5 SHA1
@@ -252,8 +252,8 @@ SHA1-Digest: 0cO2A3qfQk9Jil4RR6Gm/HUJ5v8=
Name: chrome/content/preferences/preferences.js
Digest-Algorithms: MD5 SHA1
-MD5-Digest: Fzruvnz33Q20fI9/OzzrTQ==
-SHA1-Digest: RHToUGSghQ1UhZuMXT5JwcVoaNI=
+MD5-Digest: qwwxnKYLm3VaxVICCnOrvg==
+SHA1-Digest: MQmuxZSgub6v02oOjBDwkAL4vJE=
Name: chrome/content/preferences/preferences.xul
Digest-Algorithms: MD5 SHA1
@@ -267,8 +267,8 @@ SHA1-Digest: 79aIHGFyBqioo3Y9CVV6PPHvdx4=
Name: chrome/content/preferences/session.xul
Digest-Algorithms: MD5 SHA1
-MD5-Digest: rZdMU4LTvI+uCW9Q7Xsn1A==
-SHA1-Digest: TYlXmVNQIKo/8IH1pqRGMklJa3M=
+MD5-Digest: 1S4uxGXwboCMGQl5mWPYrw==
+SHA1-Digest: zvUdm8PZVS2zX/SyGgZjO2DUyzA=
Name: chrome/content/preferences/shortcuts.js
Digest-Algorithms: MD5 SHA1
@@ -322,8 +322,8 @@ SHA1-Digest: 4MtIAAVxEKOawzqdGTko+Q8++PU=
Name: chrome/content/preferences/overlay/preferencesOverlay.js
Digest-Algorithms: MD5 SHA1
-MD5-Digest: tIRvn8yYgJRsDrvU1iHObQ==
-SHA1-Digest: WyUwQe8pTUaJm3CIhRiLVX8zLHw=
+MD5-Digest: w9P+A2m/4g1sahmTeBHFTg==
+SHA1-Digest: wDlItF1BuJJMEDw8OmhcFNQuWdY=
Name: chrome/content/preferences/overlay/tabs.xul
Digest-Algorithms: MD5 SHA1
@@ -337,8 +337,8 @@ SHA1-Digest: le5vUChrsdKqqqKOKxHYda695LY=
Name: chrome/content/preferences/subdialogs/pref-appearance.js
Digest-Algorithms: MD5 SHA1
-MD5-Digest: KXxIQASJR4dBCB9+q5ksow==
-SHA1-Digest: nhNdQoLp9YcAETwgeuvhwib1C1c=
+MD5-Digest: vsPsKubpCtSZ72nP+JehYA==
+SHA1-Digest: k6t7MI/kP5ykvFikJ10IQ0WJklM=
Name: chrome/content/preferences/subdialogs/pref-appearance.xml
Digest-Algorithms: MD5 SHA1
@@ -377,8 +377,8 @@ SHA1-Digest: 7hzpYxnGpbLRAD+2OoHh15StxLo=
Name: chrome/content/session/sessionStore.js
Digest-Algorithms: MD5 SHA1
-MD5-Digest: 5VC1rZE6M6lT0mjipjSq/w==
-SHA1-Digest: 4Qf1SEQO95h1Km50xtpDYmLVjfg=
+MD5-Digest: Rg+nq07LSRxEOH4hsI9YKg==
+SHA1-Digest: o1uXipjQGx2JzlZRMNpSMzM8vdA=
Name: chrome/content/tab/scrollbox.xml
Digest-Algorithms: MD5 SHA1
@@ -387,8 +387,8 @@ SHA1-Digest: RoL+FVXKuIvITsyAEUfwe9FITmk=
Name: chrome/content/tab/tab.js
Digest-Algorithms: MD5 SHA1
-MD5-Digest: w7ViBzH5z7eIChDnu/43Hg==
-SHA1-Digest: NXC8q5ihEP07DmsFXHJ0WtpCFUI=
+MD5-Digest: dPwrXfafi+KLn3mXtD1OiQ==
+SHA1-Digest: i7IisMAnfPUj+xiA5S7Gy7K2StY=
Name: chrome/content/tab/tabbrowser.xml
Digest-Algorithms: MD5 SHA1
@@ -2022,8 +2022,8 @@ SHA1-Digest: 41EWLE/Eld7FZmLMwogHiDitUEQ=
Name: modules/AsyncUtils.jsm
Digest-Algorithms: MD5 SHA1
-MD5-Digest: Wb3i3dPiyGyGWo2M1fT/ZQ==
-SHA1-Digest: 6cCg+hGMPOQQX2X/32Qn1QJhVEU=
+MD5-Digest: G3xPQUwLHBaVrCgL0RSktA==
+SHA1-Digest: I2ZawXvUsMJOnFK0X11krdizQjE=
Name: modules/AutoReload.jsm
Digest-Algorithms: MD5 SHA1
@@ -2032,13 +2032,13 @@ SHA1-Digest: p+oNSLFc8w/VzPfk917ot4VPuec=
Name: modules/ContentClick.jsm
Digest-Algorithms: MD5 SHA1
-MD5-Digest: o7u/Ol51tcpgZMQiPzfO1g==
-SHA1-Digest: DWwmXtu7kMc6cNn6D20vEg/3XuM=
+MD5-Digest: uFtPRxt2pY1xCwKnkfWeBQ==
+SHA1-Digest: scHb/dkprcmmEpXamx6dFmm/rEA=
Name: modules/ContextMenu.jsm
Digest-Algorithms: MD5 SHA1
-MD5-Digest: o5tggOWgphSFUpAQ/6ZkBQ==
-SHA1-Digest: 44m0AjwDEQs9VezIEHMW8ANtWts=
+MD5-Digest: zs/YUVNfwIVL6GH5m5kRyw==
+SHA1-Digest: ZMjAUHvog6Gwqcol+63NtX/rWZk=
Name: modules/Decode.jsm
Digest-Algorithms: MD5 SHA1
@@ -2047,18 +2047,18 @@ SHA1-Digest: MVzcUM01SLRF8p8GT7Mbtl2KNTo=
Name: modules/DocShellCapabilities.jsm
Digest-Algorithms: MD5 SHA1
-MD5-Digest: v4qhNAxd0bHNuc/hXto8yg==
-SHA1-Digest: D2rt1rubdOUg915Swjx1J1T3u9I=
+MD5-Digest: BhLUDCdS2kKslK5e45+WZA==
+SHA1-Digest: kdYRZenbus5q/0a6KK6WH1cpbBs=
Name: modules/DownloadLastDir.jsm
Digest-Algorithms: MD5 SHA1
-MD5-Digest: oI4DRP/q7Ri/ojtlbl7GKA==
-SHA1-Digest: zT3bTqkNxrglLNtHUMMkBL6KdjY=
+MD5-Digest: Jw/w0whiSQ/IGgMsuzkxiQ==
+SHA1-Digest: ASLHUyKlSLxk2RzQZ5rYGcy3G6g=
Name: modules/DynamicRules.jsm
Digest-Algorithms: MD5 SHA1
-MD5-Digest: fTKtb5kVwhIDaIzcAO7W+g==
-SHA1-Digest: sBwMjUD9owwQ84ERRznbS2cOu54=
+MD5-Digest: 5iEtInwUwSDL2+TJrnvJsw==
+SHA1-Digest: PwBwA0XEKRoUvyA0ps1glMdXO04=
Name: modules/LinkNodeUtils.jsm
Digest-Algorithms: MD5 SHA1
@@ -2067,13 +2067,13 @@ SHA1-Digest: vxH4QUSj23nIG8h4vJV0xkfzQBQ=
Name: modules/log.jsm
Digest-Algorithms: MD5 SHA1
-MD5-Digest: +KluleeAnpIbx4jWWyd04w==
-SHA1-Digest: 13wpYjttM3ADh+lehaBSkYCf0tI=
+MD5-Digest: srGBYnwnIFFtRylIdX5Mug==
+SHA1-Digest: TESTHqRNhyaqmr5q5pdslfhZAeU=
Name: modules/MergeWindows.jsm
Digest-Algorithms: MD5 SHA1
-MD5-Digest: womsImP/rpWkNnFRHCq+xw==
-SHA1-Digest: /FzZyta3y4kxEMZQytDo48e68OQ=
+MD5-Digest: HuLZKYy2PkKLrqAvy9LGHw==
+SHA1-Digest: AXqbIS7fs/HlxoMyvi2lFsc//7M=
Name: modules/NewTabURL.jsm
Digest-Algorithms: MD5 SHA1
@@ -2082,8 +2082,8 @@ SHA1-Digest: bcNadHzBsBxNXOXrDWaiOpqollA=
Name: modules/Places.jsm
Digest-Algorithms: MD5 SHA1
-MD5-Digest: fm8Yr8RiM+ob6QW3nmxpvg==
-SHA1-Digest: 9MWascc9XLqjAy7rAtURizBAy3A=
+MD5-Digest: Ot3rNn6vqdZ2x1+Dj3norg==
+SHA1-Digest: vdydiQRWYTcOcSAYYD9C3Rdx0Iw=
Name: modules/RenameTab.jsm
Digest-Algorithms: MD5 SHA1
@@ -2092,8 +2092,8 @@ SHA1-Digest: ayf+UM/PHxKKVLDWiGzYCgZ6Q9M=
Name: modules/Services.jsm
Digest-Algorithms: MD5 SHA1
-MD5-Digest: 8BllQS3S53t2X72KyHkXbg==
-SHA1-Digest: I+xD2DxcA+CARze1Ai2Z7aFxcys=
+MD5-Digest: kgPzcYRqNhWsDc4IckpAfg==
+SHA1-Digest: pwnVk5Jzf6s7WaErpfHBXDDrFyk=
Name: modules/Shortcuts.jsm
Digest-Algorithms: MD5 SHA1
@@ -2117,8 +2117,8 @@ SHA1-Digest: zs1zO6rUCQXx4/GQjpnzuX7qGYI=
Name: modules/Utils.jsm
Digest-Algorithms: MD5 SHA1
-MD5-Digest: VpZjKQetA/Hrz5dyvuNoRA==
-SHA1-Digest: tX+2MrHyyv5DiaskA4ZhNgqgM74=
+MD5-Digest: GLBRgxmL7yI56ovxSm7PQg==
+SHA1-Digest: 9mfmdwfOJh1LQV6eA1zP144jDho=
Name: modules/extensions/AddonManager.jsm
Digest-Algorithms: MD5 SHA1
diff --git a/META-INF/mozilla.rsa b/META-INF/mozilla.rsa
index 7e15c91..f5f9259 100644
Binary files a/META-INF/mozilla.rsa and b/META-INF/mozilla.rsa differ
diff --git a/META-INF/mozilla.sf b/META-INF/mozilla.sf
index 1daf161..3c95f57 100644
--- a/META-INF/mozilla.sf
+++ b/META-INF/mozilla.sf
@@ -1,4 +1,4 @@
Signature-Version: 1.0
-MD5-Digest-Manifest: CU/ajd7dNlEY0zN+tTzXBA==
-SHA1-Digest-Manifest: iIOUB082slY6ACxLphM20gYPJoU=
+MD5-Digest-Manifest: PPLqdhSaITrBZH2beB7MwQ==
+SHA1-Digest-Manifest: 9unlXEZV92PI+aZd5jhgqJYtZuc=
diff --git a/chrome/content/about.js b/chrome/content/about.js
index 2ff7aca..1b7d57e 100644
--- a/chrome/content/about.js
+++ b/chrome/content/about.js
@@ -1,7 +1,7 @@
/* exported init */
"use strict";
-function init() { // jshint ignore:line
+function init() {
var addon = window.arguments[0];
var extensionsStrings = document.getElementById("extensionsStrings");
var extensionVersion, currentVersion;
diff --git a/chrome/content/changecode.js b/chrome/content/changecode.js
index 72b7026..0db6724 100644
--- a/chrome/content/changecode.js
+++ b/chrome/content/changecode.js
@@ -1,4 +1,3 @@
-/* jshint strict: false */
/* eslint strict: 0 */
// don't use strict for this file
@@ -180,7 +179,6 @@ Tabmix.nonStrictMode = function(aObj, aFn, aArg) {
};
(function(obj) {
- /* jshint moz: true, esnext: false */
let global = Components.utils.getGlobalForObject(obj);
let fn = global["ev" + "al"];
Tabmix._makeCode = function(name, code) {
diff --git a/chrome/content/click/click.js b/chrome/content/click/click.js
index 8e56036..204b191 100644
--- a/chrome/content/click/click.js
+++ b/chrome/content/click/click.js
@@ -608,6 +608,9 @@ var TabmixContext = {
if (!gContextMenu || event.originalTarget != document.getElementById("contentAreaContextMenu"))
return true;
+ gContextMenu.tabmixLinks = Tabmix.contextMenuLinks;
+ Tabmix.contextMenuLinks = null;
+
var tab = gBrowser.selectedTab;
try {
var contentClick = gContextMenu.onTextInput || gContextMenu.onLink || gContextMenu.onImage;
@@ -730,26 +733,8 @@ var TabmixContext = {
},
openMultipleLinks: function TMP_openMultipleLinks(check) {
- let urls = [];
- let browser = window.gBrowser.selectedBrowser;
-
- function getLinks() {
- try {
- let handler = TabmixSvc.syncHandlers.get(browser.permanentKey);
- let result = handler.getSelectedLinks();
- gContextMenu.tabmixLinks = result && result.split('\n');
- } catch (ex) {
- Tabmix.log("unable to get syncHandlers for page " +
- browser.currentURI.spec + "\n" + ex);
- }
- return gContextMenu.tabmixLinks || [];
- }
-
- if (Tabmix.isVersion(320))
- urls = gContextMenu.tabmixLinks || getLinks();
- // getSelectedLinks was not implemented for remote tabs before Firefox 32
- else if (browser.getAttribute("remote") != "true")
- urls = Tabmix.ContextMenu.getSelectedLinks(content, check);
+ let urls = Tabmix.isVersion(420) ? gContextMenu.tabmixLinks :
+ Tabmix.ContextMenu.getSelectedLinks(content, check);
if (!check && urls.length) {
Tabmix.loadTabs(urls, false);
diff --git a/chrome/content/content.js b/chrome/content/content.js
index e6cfe8f..492b3dc 100644
--- a/chrome/content/content.js
+++ b/chrome/content/content.js
@@ -1,7 +1,7 @@
/* eslint mozilla/balanced-listeners:0 */
"use strict";
-var {classes: Cc, interfaces: Ci, utils: Cu} = Components; // jshint ignore:line
+var {classes: Cc, interfaces: Ci, utils: Cu} = Components;
Cu.import("resource://gre/modules/XPCOMUtils.jsm", this);
@@ -50,10 +50,6 @@ var TabmixContentHandler = {
init: function() {
this.MESSAGES.forEach(m => addMessageListener(m, this));
- // Send a CPOW to the parent so that it can synchronously request
- // docShell capabilities.
- sendSyncMessage("Tabmix:SetSyncHandler", {}, {syncHandler: this});
-
if (PROCESS_TYPE_CONTENT) {
addEventListener("drop", this.onDrop);
}
@@ -145,15 +141,6 @@ var TabmixContentHandler = {
return DocShellCapabilities.collect(docShell).join(",") || "";
},
- getSelectedLinks: function() {
- return ContextMenu.getSelectedLinks(content).join("\n");
- },
-
- wrapNode: function(node) {
- let window = TabmixClickEventHandler._focusedWindow;
- return LinkNodeUtils.wrap(node, window);
- },
-
onDrop: function(event) {
let uri, name = { };
let linkHandler = Cc["@mozilla.org/content/dropped-link-handler;1"].
@@ -382,6 +369,28 @@ var AboutNewTabHandler = {
}
};
+var ContextMenuHandler = {
+ init: function(global) {
+ Cc["@mozilla.org/eventlistenerservice;1"]
+ .getService(Ci.nsIEventListenerService)
+ .addSystemEventListener(global, "contextmenu", this.prepareContextMenu, true);
+ },
+
+ prepareContextMenu: function(event) {
+ if (event.defaultPrevented) {
+ return;
+ }
+
+ let links;
+ if (TabmixSvc.prefBranch.getBoolPref("openAllLinks")) {
+ links = ContextMenu.getSelectedLinks(content).join("\n");
+ }
+
+ sendRpcMessage("Tabmix:contextmenu", {links: links});
+ }
+};
+
TabmixContentHandler.init();
TabmixClickEventHandler.init(this);
AboutNewTabHandler.init(this);
+ContextMenuHandler.init(this);
diff --git a/chrome/content/extensions/extensions.js b/chrome/content/extensions/extensions.js
index 5e94150..8badcb9 100644
--- a/chrome/content/extensions/extensions.js
+++ b/chrome/content/extensions/extensions.js
@@ -77,6 +77,7 @@ var TMP_extensionsCompatibility = {
try {
if ("TreeStyleTabService" in window) {
this.treeStyleTab.onContentLoaded();
+ this.treeStyleTab.installed = true;
Tabmix.extensions.treeStyleTab = true;
Tabmix.extensions.verticalTabBar = true;
}
@@ -127,7 +128,7 @@ var TMP_extensionsCompatibility = {
aTab.setAttribute("image", browser.mIconURL);
else
aTab.removeAttribute("image");
- gBrowser._tabAttrModified(aTab);
+ gBrowser._tabAttrModified(aTab, ["image"]);
}
}
}
@@ -566,6 +567,7 @@ TMP_extensionsCompatibility.newsfox = {
* https://addons.mozilla.org/en-US/firefox/addon/tree-style-tab/
*/
TMP_extensionsCompatibility.treeStyleTab = {
+ installed: false,
errorMsg: "Error in Tabmix when trying to load compatible functions with TreeStyleTab extension",
preInit: function() {
@@ -766,10 +768,41 @@ TMP_extensionsCompatibility.treeStyleTab = {
'TreeStyleTabService.readyToOpenChildTab(gBrowser, true); $1 TreeStyleTabService.stopToOpenChildTab(gBrowser);'
).toCode();
}
+ },
- Tabmix.changeCode(window, "window.TMP_BrowserOpenTab")._replace(
- 'var newTab = gBrowser.addTab',
- 'gBrowser.treeStyleTab.onBeforeNewTabCommand();\n $&'
- ).toCode();
- }
+ onBeforeNewTabCommand: function(tab, openTabNext) {
+ if (!this.installed) {
+ return;
+ }
+ if (openTabNext) {
+ this.openNewTabNext(tab, true);
+ } else {
+ gBrowser.treeStyleTab.onBeforeNewTabCommand();
+ }
+ },
+
+ // instruct treeStyleTab to use 'kNEWTAB_OPEN_AS_NEXT_SIBLING' when our preference
+ // is to open the tab next
+ openNewTabNext: function(tab, openTabNext, clean) {
+ if (!this.installed || !openTabNext) {
+ return;
+ }
+
+ let tst = gBrowser.treeStyleTab;
+ let browser = tst.getBrowserFromTabBrowserElements(tab);
+ if (!browser) {
+ return;
+ }
+ let baseTab = tst.getTabFromBrowser(browser, tst.getTabBrowserFromChild(browser));
+
+ // clean previously ready state set by treeStyleTab
+ if (clean) {
+ tst.stopToOpenChildTab(baseTab);
+ let parentTab = tst.getParentTab(baseTab);
+ if (parentTab) {
+ tst.stopToOpenChildTab(parentTab);
+ }
+ }
+ tst.readyToOpenNextSiblingTabNow(baseTab);
+ },
};
diff --git a/chrome/content/links/setup.js b/chrome/content/links/setup.js
index 97e9628..59f7972 100644
--- a/chrome/content/links/setup.js
+++ b/chrome/content/links/setup.js
@@ -341,7 +341,7 @@ Tabmix.adjustTabstrip = function tabContainer_adjustTabstrip(skipUpdateScrollSta
* Don't use return in this function
* TreeStyleTabe add some code at the end
*/
- let transitionend = Tabmix.callerName() == "onxbltransitionend";
+ let transitionend = Tabmix.callerTrace("onxbltransitionend");
if (tabsCount == 1) {
let tab = this.selectedItem;
if (!aUrl) {
diff --git a/chrome/content/links/userInterface.js b/chrome/content/links/userInterface.js
index b3d3ad7..a944536 100644
--- a/chrome/content/links/userInterface.js
+++ b/chrome/content/links/userInterface.js
@@ -158,6 +158,10 @@ function TMP_BrowserOpenTab(aTab, replaceLastTab) {
TabmixSvc.prefs.get("extensions.privateTab.makeNewEmptyTabsPrivate", 0) === 0) {
privateTab.readyToOpenTab(false);
}
+
+ let baseTab = aTab && aTab.localName == "tab" ? aTab : null;
+ let openTabNext = baseTab || !replaceLastTab && Tabmix.prefs.getBoolPref("openNewTabNext");
+ TMP_extensionsCompatibility.treeStyleTab.onBeforeNewTabCommand(baseTab || selectedTab, openTabNext);
var newTab = gBrowser.addTab(url, {
charset: loadBlank ? null : gBrowser.selectedBrowser.characterSet,
ownerTab: loadInBackground ? null : selectedTab,
@@ -176,12 +180,8 @@ function TMP_BrowserOpenTab(aTab, replaceLastTab) {
}
}
- if (aTab && aTab.localName == "tab")
- gBrowser.moveTabTo(newTab, aTab._tPos + 1);
- else if (!replaceLastTab && Tabmix.prefs.getBoolPref("openNewTabNext")) {
- // we used to move tab after lastRelatedTab but we don't need it on new tabs
- // and it mess with recently used tabs order
- gBrowser.moveTabTo(newTab, selectedTab._tPos + 1);
+ if (openTabNext) {
+ gBrowser.moveTabTo(newTab, (baseTab || selectedTab)._tPos + 1);
}
// make sure to update recently used tabs
// if user open many tabs quickly select event don't have time to fire
diff --git a/chrome/content/minit/minit.js b/chrome/content/minit/minit.js
index f7e2470..6365e26 100644
--- a/chrome/content/minit/minit.js
+++ b/chrome/content/minit/minit.js
@@ -365,10 +365,10 @@ var TMP_tabDNDObserver = {
event.stopPropagation();
document.getElementById("tabmix-tooltip").hidePopup();
- /* jshint ignore:start */ /* eslint-disable */
+ /* eslint-disable */
// old TreeStyleTab extension version look for isTabReorder in our code
var isTabReorder = draggeType == this.DRAG_TAB_IN_SAME_WINDOW;
- /* jshint ignore:end */ /* eslint-enable */
+ /* eslint-enable */
var newIndex = this._getDNDIndex(event);
var oldIndex = draggedTab ? draggedTab._tPos : -1;
var left_right;
@@ -1191,6 +1191,7 @@ Tabmix.navToolbox = {
Tabmix.originalFunctions.oldHandleCommand.toString().indexOf(TMP_fn) > -1)
return;
+ let $LF = "\n ";
// we don't do anything regarding IeTab and URL Suffix extensions
Tabmix.changeCode(obj, "gURLBar." + fn, {silent: this.urlBarInitialized})._replace(
'{',
@@ -1218,8 +1219,14 @@ Tabmix.navToolbox = {
'(where == "current" || !isMouseEvent && !loadNewTab && /^tab/.test(where))'
)._replace(
'openUILinkIn(url, where, params);',
- 'params.inBackground = Tabmix.prefs.getBoolPref("loadUrlInBackground");\
- $&'
+ 'params.inBackground = Tabmix.prefs.getBoolPref("loadUrlInBackground");' + $LF +
+ 'if (/^tab/.test(where)) {' + $LF +
+ ' let openTabNext = Tabmix.prefs.getBoolPref("openTabNext") &&' + $LF +
+ ' !Services.prefs.getBoolPref("browser.tabs.insertRelatedAfterCurrent");' + $LF +
+ ' TMP_extensionsCompatibility.treeStyleTab' + $LF +
+ ' .openNewTabNext(gBrowser.selectedTab, openTabNext);' + $LF +
+ '}' + $LF +
+ '$&'
).toCode();
// don't call ChangeCode.isValidToChange after urlbar initialized,
diff --git a/chrome/content/minit/tablib.js b/chrome/content/minit/tablib.js
index 7f20c25..0d8d357 100644
--- a/chrome/content/minit/tablib.js
+++ b/chrome/content/minit/tablib.js
@@ -155,8 +155,8 @@ var tablib = { // eslint-disable-line
Tabmix.changeCode(obj, "gBrowser." + fnName)._replace(
'{', '{\n' +
- ' let dontMove, isPending, stack = Tabmix.stackTrace(),\n' +
- ' isRestoringTab = stack.contain("ssi_restoreWindow");\n'
+ ' let dontMove, isPending, callerTrace = Tabmix.callerTrace(),\n' +
+ ' isRestoringTab = callerTrace.contain("ssi_restoreWindow");\n'
)._replace(
'let params = arguments[1];',
'$&\n' +
@@ -198,7 +198,7 @@ var tablib = { // eslint-disable-line
't.dispatchEvent(evt);' +
'var openTabnext = Tabmix.prefs.getBoolPref("openTabNext");' +
'if (openTabnext) {' +
- ' if (dontMove || Tabmix.dontMoveNewTab(stack))' +
+ ' if (dontMove || Tabmix.dontMoveNewTab(callerTrace))' +
' openTabnext = false;' +
' else if (!Services.prefs.getBoolPref("browser.tabs.insertRelatedAfterCurrent"))' +
' aRelatedToCurrent = true;' +
@@ -207,8 +207,8 @@ var tablib = { // eslint-disable-line
't.owner = this.selectedTab;', 't.owner = _selectedTab;'
).toCode();
- Tabmix.dontMoveNewTab = function(stack) {
- return stack.contain("ssi_restoreWindow", "ssi_duplicateTab");
+ Tabmix.dontMoveNewTab = function(callerTrace) {
+ return callerTrace.contain("ssi_restoreWindow", "ssi_duplicateTab");
};
// ContextMenu Extensions raplce the original removeTab function
@@ -499,7 +499,7 @@ var tablib = { // eslint-disable-line
// before our mousedown handler can prevent it
Tabmix.changeCode(tabBar, "gBrowser.tabContainer._selectNewTab")._replace(
'{',
- '{if(!Tabmix.prefs.getBoolPref("selectTabOnMouseDown") && Tabmix.isCallerInList("onxblmousedown")) return;'
+ '{if(!Tabmix.prefs.getBoolPref("selectTabOnMouseDown") && Tabmix.callerTrace("onxblmousedown")) return;'
).toCode();
Tabmix.changeCode(tabBar, "gBrowser.tabContainer.visible", {setter: true})._replace(
@@ -571,22 +571,28 @@ var tablib = { // eslint-disable-line
arguments[1] = "tabshifted";
}
+ if (where == window) {
+ return Tabmix.originalFunctions.duplicateTabIn.apply(this, arguments);
+ }
+
+ let pref = Tabmix.callerTrace("gotoHistoryIndex", "BrowserForward", "BrowserBack") ?
+ "openTabNext" : "openDuplicateNext";
+ let openTabNext = Tabmix.prefs.getBoolPref(pref);
+ TMP_extensionsCompatibility.treeStyleTab.openNewTabNext(aTab, openTabNext, true);
+
let result = Tabmix.originalFunctions.duplicateTabIn.apply(this, arguments);
- if (where != window) {
- let pref = Tabmix.isCallerInList("gotoHistoryIndex", "BrowserForward", "BrowserBack") ?
- "openTabNext" : "openDuplicateNext";
- let newTab = gBrowser.getTabForLastPanel();
- if (Tabmix.prefs.getBoolPref(pref)) {
- let pos = newTab._tPos > aTab._tPos ? 1 : 0;
- gBrowser.moveTabTo(newTab, aTab._tPos + pos);
- }
- let bgLoad = Tabmix.prefs.getBoolPref("loadDuplicateInBackground");
- let selectNewTab = where == "tab" ? !bgLoad : bgLoad;
- if (selectNewTab) {
- gBrowser.selectedTab = newTab;
- }
+ let newTab = gBrowser.getTabForLastPanel();
+ if (openTabNext) {
+ let pos = newTab._tPos > aTab._tPos ? 1 : 0;
+ gBrowser.moveTabTo(newTab, aTab._tPos + pos);
}
+ let bgLoad = Tabmix.prefs.getBoolPref("loadDuplicateInBackground");
+ let selectNewTab = where == "tab" ? !bgLoad : bgLoad;
+ if (selectNewTab) {
+ gBrowser.selectedTab = newTab;
+ }
+
return result;
};
@@ -786,7 +792,7 @@ var tablib = { // eslint-disable-line
Tabmix.changeCode(window, "goQuitApplication")._replace(
'var appStartup',
- 'let closedtByToolkit = Tabmix.isCallerInList("toolkitCloseallOnUnload");' +
+ 'let closedtByToolkit = Tabmix.callerTrace("toolkitCloseallOnUnload");' +
'if (!TabmixSessionManager.canQuitApplication(closedtByToolkit))' +
' return false;' +
'$&'
@@ -934,8 +940,11 @@ var tablib = { // eslint-disable-line
aTab = this.mCurrentTab;
var newTab = null;
- // try to have SessionStore duplicate the given tab
+ let copyToNewWindow = window != aTab.ownerDocument.defaultView;
+ let openDuplicateNext = !disallowSelect && !copyToNewWindow && Tabmix.prefs.getBoolPref("openDuplicateNext");
+ TMP_extensionsCompatibility.treeStyleTab.openNewTabNext(aTab, openDuplicateNext);
+ // try to have SessionStore duplicate the given tab
if (!aHref && !aTabData) {
newTab = TabmixSvc.ss.duplicateTab(window, aTab, 0);
} else {
@@ -952,8 +961,7 @@ var tablib = { // eslint-disable-line
this.selectedBrowser.focus();
// move new tab to place before we select it
- var copyToNewWindow = window != aTab.ownerDocument.defaultView;
- if (!disallowSelect && !copyToNewWindow && Tabmix.prefs.getBoolPref("openDuplicateNext")) {
+ if (openDuplicateNext) {
let pos = newTab._tPos > aTab._tPos ? 1 : 0;
this.moveTabTo(newTab, aTab._tPos + pos);
}
@@ -985,7 +993,6 @@ var tablib = { // eslint-disable-line
}
// we need to update history title after the new page loaded for use in back/forword button
function updateNewHistoryTitle() {
- /* jshint validthis: true */
try {
this.removeEventListener("SSTabRestored", updateNewHistoryTitle, true);
let browser = this.linkedBrowser;
@@ -1000,7 +1007,6 @@ var tablib = { // eslint-disable-line
}
}
function urlForDownload() {
- /* jshint validthis: true */
try {
this.removeEventListener("SSTabRestored", urlForDownload, true);
let browser = this.linkedBrowser;
@@ -1111,8 +1117,10 @@ var tablib = { // eslint-disable-line
let json = {button: 0, shiftKey: false, ctrlKey: false, metaKey: false,
altKey: false, target: {},
tabmix_openLinkWithHistory: true};
+ // we only get here when it is safe to use contentWindowAsCPOW
+ // see TabmixContext.updateMainContextMenu
let result = Tabmix.ContentClick.getParamsForLink(json,
- target, url, browser, document.commandDispatcher.focusedWindow);
+ target, url, browser, gBrowser.selectedBrowser._contentWindow);
return result._href && isValid(result._href) ? result._href : null;
}
return url;
@@ -1331,7 +1339,7 @@ var tablib = { // eslint-disable-line
aTab.setAttribute("mergeselected", "true");
aTab.label = "(*) " + aTab.label;
}
- this._tabAttrModified(aTab);
+ this._tabAttrModified(aTab, ["label"]);
if (TabmixTabbar.widthFitTitle) {
TabmixTabbar.updateScrollStatus();
TabmixTabbar.updateBeforeAndAfter();
@@ -1462,8 +1470,9 @@ var tablib = { // eslint-disable-line
let warnAboutClosingTabs = function(whatToClose, aTab, aDomain) {
// see tablib.closeWindow comment
- if (Tabmix.isCallerInList("BG__onQuitRequest"))
+ if (Tabmix.callerTrace("BG__onQuitRequest")) {
return true;
+ }
var closing = this.closingTabsEnum;
// try to cach call from other extensions to warnAboutClosingTabs (before Firefox 24)
if (typeof (whatToClose) == "boolean")
@@ -1867,8 +1876,7 @@ var tablib = { // eslint-disable-line
// we always show our prompt on Mac
var showPrompt = TabmixSvc.isMac || !isAfterFirefoxPrompt();
// get caller caller name and make sure we are not on restart
- var quitType = Tabmix.getCallerNameByIndex(2);
- var askBeforSave = quitType != "restartApp" && quitType != "restart";
+ var askBeforSave = !Tabmix.callerTrace("restartApp", "restart");
var isLastWindow = Tabmix.isLastBrowserWindow;
var result = TabmixSessionManager.deinit(isLastWindow, askBeforSave);
var canClose = result.canClose;
diff --git a/chrome/content/overlay/browsr.css b/chrome/content/overlay/browsr.css
index c5a982e..55b42f4 100644
--- a/chrome/content/overlay/browsr.css
+++ b/chrome/content/overlay/browsr.css
@@ -322,8 +322,3 @@ so display: none !important; does not hide the button */
#tabmix-rows-tooltip:not([flowing="multibar"]) {
display: none;
}
-
-#main-window[tabsintitlebar][tabmix-tabbaronbottom] .tabbrowser-tabbox,
-#main-window[tabsintitlebar] #TabsToolbar[tabmix-disallow-drag] {
- -moz-window-dragging: no-drag;
-}
diff --git a/chrome/content/overlay/firefox.css b/chrome/content/overlay/firefox.css
index e27341a..2d18c5a 100644
--- a/chrome/content/overlay/firefox.css
+++ b/chrome/content/overlay/firefox.css
@@ -15,3 +15,9 @@
*/
margin-top: 1px !important;
}
+
+/* -moz-window-dragging is not recognize by Plaemoon */
+#main-window[tabsintitlebar][tabmix-tabbaronbottom] .tabbrowser-tabbox,
+#main-window[tabsintitlebar] #TabsToolbar[tabmix-disallow-drag] {
+ -moz-window-dragging: no-drag;
+}
diff --git a/chrome/content/places/places.js b/chrome/content/places/places.js
index e78ceaf..f137f3b 100644
--- a/chrome/content/places/places.js
+++ b/chrome/content/places/places.js
@@ -63,7 +63,7 @@ var TMP_Places = {
let $LF = '\n ';
Tabmix.changeCode(PlacesCommandHook, "uniqueCurrentPages", {getter: true})._replace(
'URIs.push(tab.linkedBrowser.currentURI);',
- 'if (Tabmix.getCallerNameByIndex(2) == "PCH_updateBookmarkAllTabsCommand") {' + $LF +
+ 'if (Tabmix.callerTrace("PCH_updateBookmarkAllTabsCommand")) {' + $LF +
' $&' + $LF +
'} else {' + $LF +
' let uri = tab.linkedBrowser.currentURI;' + $LF +
@@ -312,7 +312,7 @@ var TMP_Places = {
aTab.label = title;
aTab.crop = title != aUrl || aUrl == TabmixSvc.aboutBlank ? "end" : "center";
aTab.setAttribute("tabmix_changed_label", title);
- gBrowser._tabAttrModified(aTab);
+ gBrowser._tabAttrModified(aTab, ["label", "crop"]);
if (aTab.selected)
gBrowser.updateTitlebar();
if (!aTab.hasAttribute("faviconized"))
@@ -683,11 +683,12 @@ Tabmix.onContentLoaded = {
)._replace(
'return shift ? "tabshifted" : "tab";',
'{' + $LF +
+ 'let callerTrace = Tabmix.callerTrace();' + $LF +
'let list = ["openUILink", "handleLinkClick", "TMP_tabshifted", "TMP_contentLinkClick"];' + $LF +
- 'let pref = Tabmix.isCallerInList(list) ?' + $LF +
+ 'let pref = callerTrace.contain(list) ?' + $LF +
' "extensions.tabmix.inversefocusLinks" : "extensions.tabmix.inversefocusOther";' + $LF +
'let notOneClickSearch = !getBoolPref("browser.search.showOneOffButtons", false) ||' + $LF +
- ' Tabmix.callerName() != "onPopupClick";' + $LF +
+ ' !callerTrace.contain("onPopupClick");' + $LF +
'if (notOneClickSearch && getBoolPref(pref, true))' + $LF +
' shift = !shift;' + $LF +
'$&' + $LF +
@@ -703,11 +704,11 @@ Tabmix.onContentLoaded = {
Tabmix.changeCode(fnObj, fnName)._replace(
'{',
'{\n' +
- ' let tabmixCaller = Tabmix.getCallerNameByIndex(2);\n' +
- ' if (tabmixCaller == "BG_observe") {\n' +
+ ' let callerTrace = Tabmix.callerTrace();\n' +
+ ' if (callerTrace.contain("BG_observe")) {\n' +
' params.inBackground = getBoolPref("browser.tabs.loadInBackground");\n' +
' } else if (where == "current" &&\n' +
- ' tabmixCaller == "ReaderParent.toggleReaderMode") {\n' +
+ ' callerTrace.contain("ReaderParent.toggleReaderMode")) {\n' +
' gBrowser.selectedBrowser.tabmix_allowLoad = true;\n' +
' }\n'
)._replace(
diff --git a/chrome/content/preferences/appearance.js b/chrome/content/preferences/appearance.js
index 68ad4e5..64cd6c3 100644
--- a/chrome/content/preferences/appearance.js
+++ b/chrome/content/preferences/appearance.js
@@ -1,7 +1,7 @@
/* exported gAppearancePane */
"use strict";
-var gAppearancePane = { // jshint ignore:line
+var gAppearancePane = {
init: function() {
var browserWindow = Tabmix.getTopWin();
// disable options for position the tabbar and scroll mode if TreeStyleTab extension installed
diff --git a/chrome/content/preferences/menu.js b/chrome/content/preferences/menu.js
index 523693b..8780e6e 100644
--- a/chrome/content/preferences/menu.js
+++ b/chrome/content/preferences/menu.js
@@ -1,7 +1,7 @@
/* exported gMenuPane */
"use strict";
-var gMenuPane = { // jshint ignore:line
+var gMenuPane = {
init: function() {
$("pinTab").label = gPrefWindow.pinTabLabel;
$("togglePinTab").setAttribute("label", gPrefWindow.pinTabLabel);
diff --git a/chrome/content/preferences/overlay/preferencesOverlay.js b/chrome/content/preferences/overlay/preferencesOverlay.js
index 5115e91..31e1332 100644
--- a/chrome/content/preferences/overlay/preferencesOverlay.js
+++ b/chrome/content/preferences/overlay/preferencesOverlay.js
@@ -2,7 +2,7 @@
Components.utils.import("resource://tabmixplus/Services.jsm");
-var gTabMix_preferencesOverlay = { // jshint ignore:line
+var gTabMix_preferencesOverlay = {
id: function(id) {
return document.getElementById(id);
},
diff --git a/chrome/content/preferences/preferences.js b/chrome/content/preferences/preferences.js
index 4b24061..013d72c 100644
--- a/chrome/content/preferences/preferences.js
+++ b/chrome/content/preferences/preferences.js
@@ -1,4 +1,3 @@
-/* jshint esnext: true */
/* globals _sminstalled, gPreferenceList */
/* exported defaultSetting, toggleSyncPreference, exportData, importData,
showPane, openHelp */
@@ -6,12 +5,12 @@
/***** Preference Dialog Functions *****/
var gIncompatiblePane;
-var {classes: Cc, interfaces: Ci, utils: Cu} = Components; // jshint ignore:line
+var {classes: Cc, interfaces: Ci, utils: Cu} = Components;
var PrefFn = {0: "", 32: "CharPref", 64: "IntPref", 128: "BoolPref"};
this.$ = id => document.getElementById(id);
-var gPrefWindow = { // jshint ignore:line
+var gPrefWindow = {
widthChanged: false,
_initialized: false,
init: function() {
diff --git a/chrome/content/preferences/session.xul b/chrome/content/preferences/session.xul
index 07da5f7..4fd070c 100644
--- a/chrome/content/preferences/session.xul
+++ b/chrome/content/preferences/session.xul
@@ -3,8 +3,6 @@
<!DOCTYPE overlay [
<!ENTITY % pref-tabmixDTD SYSTEM "chrome://tabmixplus/locale/pref-tabmix.dtd">
%pref-tabmixDTD;
-<!ENTITY % tabsDTD SYSTEM "chrome://browser/locale/preferences/tabs.dtd">
-%tabsDTD;
]>
<overlay id="SessionPaneOverlay"
@@ -66,8 +64,6 @@
name="extensions.tabmix.sessions.restore.concatenate" type="bool"/>
<preference id="pref_onRestore.reloadall"
name="extensions.tabmix.sessions.restore.reloadall" type="bool"/>
- <preference id="pref_restore_on_demand"
- name="browser.sessionstore.restore_on_demand" type="bool"/>
<preference id="pref_session.History"
name="extensions.tabmix.sessions.save.history" type="bool"/>
<preference id="pref_session.Permissions"
@@ -213,8 +209,6 @@
preference="pref_onOverwrite-Save" observes="obs_onRestore.overwritewindows"/>
<checkbox_tmp id="onRestore.concatenate" label="&sm.restore.merge;" preference="pref_onRestore.concatenate"/>
<checkbox_tmp id="onRestore.reloadall" label="&sm.restore.bypassCache;" preference="pref_onRestore.reloadall"/>
- <checkbox id="restoreOnDemand" label="&restoreTabsOnDemand.label;"
- preference="pref_restore_on_demand"/>
</groupbox>
</tabpanel>
<!-- Build-in SessionStore (we hide thid panel, don't put it in first or last tab)-->
diff --git a/chrome/content/preferences/subdialogs/pref-appearance.js b/chrome/content/preferences/subdialogs/pref-appearance.js
index 9029a16..6e77275 100644
--- a/chrome/content/preferences/subdialogs/pref-appearance.js
+++ b/chrome/content/preferences/subdialogs/pref-appearance.js
@@ -3,7 +3,7 @@
var $ = id => document.getElementById(id);
-var tabstyles = { // jshint ignore:line
+var tabstyles = {
pref: "appearance_tab",
init: function() {
$("stylestabs").selectedIndex = Tabmix.prefs.prefHasUserValue(this.pref) ?
diff --git a/chrome/content/session/sessionStore.js b/chrome/content/session/sessionStore.js
index fc27e80..d07b339 100644
--- a/chrome/content/session/sessionStore.js
+++ b/chrome/content/session/sessionStore.js
@@ -6,7 +6,7 @@
* original code by onemen
*
*/
-var TMP_SessionStore = { // jshint ignore:line
+var TMP_SessionStore = {
// get title for closed window from bookmark title or user tab title
getTitleForClosedWindow: function TMP_ss_getTitleForClosedWindow(aUndoItem) {
// if user already rename this item wo don't use other title
@@ -287,7 +287,7 @@ var TMP_SessionStore = { // jshint ignore:line
};
-var TMP_ClosedTabs = { // jshint ignore:line
+var TMP_ClosedTabs = {
_buttonBroadcaster: null,
get buttonBroadcaster() {
if (!this._buttonBroadcaster)
@@ -608,7 +608,7 @@ var TMP_ClosedTabs = { // jshint ignore:line
};
-var TabmixConvertSession = { // jshint ignore:line
+var TabmixConvertSession = {
get getTitle() {
return TabmixSvc.getString("incompatible.title") + " - " + TabmixSvc.getSMString("sm.title");
},
diff --git a/chrome/content/tab/tab.js b/chrome/content/tab/tab.js
index 966281c..271b5f8 100644
--- a/chrome/content/tab/tab.js
+++ b/chrome/content/tab/tab.js
@@ -254,7 +254,7 @@ var TabmixTabbar = {
return;
}
- var newHeight, fillRowsHeights;
+ var newHeight, fillRowsHeights, updateAppearanceOnce;
if (typeof (this._heights[tabsPosition]) == "undefined") {
this._heights[tabsPosition] = {};
fillRowsHeights = true;
@@ -262,6 +262,7 @@ var TabmixTabbar = {
if (aRows in this._heights[tabsPosition])
newHeight = this._heights[tabsPosition][aRows];
else {
+ updateAppearanceOnce = true;
if (Tabmix.tabsUtils.tabstripInnerbox) {
let height = Tabmix.tabsUtils.tabstripInnerbox.getBoundingClientRect().height;
if (tabBar.getAttribute("multibar") == "scrollbar") {
@@ -292,8 +293,7 @@ var TabmixTabbar = {
this.setHeightByPixels(newHeight);
// fix multi-row background on windows XP
- if (this.updateAppearanceOnce) {
- this.updateAppearanceOnce = false;
+ if (this.updateAppearanceOnce && updateAppearanceOnce) {
TabsInTitlebar.updateAppearance(true);
}
},
@@ -826,8 +826,8 @@ Tabmix.tabsUtils = {
Services.prefs.getBoolPref("browser.tabs.animate")) {
// after 250ms new tab is fully opened
if (!this.adjustNewtabButtonTimeout) {
- let timeout = 250, callerName = Tabmix.callerName();
- if (callerName == "onxbloverflow") {
+ let timeout = 250;
+ if (Tabmix.callerTrace("onxbloverflow")) {
let timeFromLastTabOpened = Date.now() - Tabmix._lastTabOpenedTime;
if (timeFromLastTabOpened < 250)
timeout = 0;
@@ -1796,6 +1796,13 @@ gTMPprefObserver = {
},
miscellaneousRules: function TMP_PO_miscellaneousRules() {
+ // make sure we have valid height for the buttons. with some extensions
+ // combination it is possible to get zero height, if Tabmix.getButtonsHeight
+ // called to early
+ if (!Tabmix._buttonsHeight) {
+ Tabmix.getButtonsHeight(true);
+ }
+
let skin;
// with Walnut theme we get wrong height on Firefox 36
if (Tabmix._buttonsHeight > 50) {
@@ -2755,7 +2762,7 @@ TabmixProgressListener = {
tab._tabmix_downloadingTimeout = null;
if (this && this.mTabBrowser && tab && tab.parentNode)
this.mTabBrowser.removeTab(tab, {animate: false});
- }, 500, this);
+ }, 1000, this);
}
let tabsCount = this.mTabBrowser.visibleTabs.length;
diff --git a/chrome/content/tabmix.js b/chrome/content/tabmix.js
index c11f0cb..927ba1b 100644
--- a/chrome/content/tabmix.js
+++ b/chrome/content/tabmix.js
@@ -99,7 +99,7 @@ Tabmix.sessionInitialized = function() {
// we call gTMPprefObserver.miscellaneousRules to add some dynamic rules
// from Tabmix.afterDelayedStartup
-Tabmix.getButtonsHeight = function() {
+Tabmix.getButtonsHeight = function(setDefault) {
if (gBrowser.tabContainer.orient == "horizontal") {
let tabBar = gBrowser.tabContainer;
let stripIsHidden = TabmixTabbar.hideMode !== 0 && !tabBar.visible;
@@ -108,6 +108,10 @@ Tabmix.getButtonsHeight = function() {
this._buttonsHeight = Tabmix.visibleTabs.first.getBoundingClientRect().height;
if (stripIsHidden)
tabBar.visible = false;
+
+ if (setDefault && !this._buttonsHeight) {
+ this._buttonsHeight = TabmixSvc.australis ? 31 : 24;
+ }
} else {
this._buttonsHeight = 24;
}
@@ -833,9 +837,6 @@ var TMP_eventListener = {
}
// clean WeakMap
- let browser = tab.linkedBrowser;
- if (Tabmix.isVersion(320) && browser && TabmixSvc.syncHandlers.has(browser.permanentKey))
- TabmixSvc.syncHandlers.delete(browser.permanentKey);
if (this.tabWidthCache.has(tab))
this.tabWidthCache.delete(tab);
},
diff --git a/chrome/content/utils.js b/chrome/content/utils.js
index bc5e963..ddab77a 100644
--- a/chrome/content/utils.js
+++ b/chrome/content/utils.js
@@ -1,6 +1,6 @@
"use strict";
-var Tabmix = { // jshint ignore:line
+var Tabmix = {
get prefs() {
delete this.prefs;
return (this.prefs = Services.prefs.getBranch("extensions.tabmix."));
@@ -248,7 +248,7 @@ var Tabmix = { // jshint ignore:line
var methods = ["changeCode", "setNewFunction", "nonStrictMode",
"getObject", "log", "getCallerNameByIndex", "callerName",
- "clog", "isCallerInList", "stackTrace",
+ "clog", "isCallerInList", "callerTrace",
"obj", "assert", "trace", "reportError"];
methods.forEach(function(id) {
this[id] = function TMP_console_wrapper() {
diff --git a/install.rdf b/install.rdf
index d90721e..ebf1584 100644
--- a/install.rdf
+++ b/install.rdf
@@ -5,7 +5,7 @@
<RDF:Description RDF:about="urn:mozilla:install-manifest"
NS1:id="{dc572301-7619-498c-a57d-39143191b318}"
NS1:name="Tab Mix Plus"
- NS1:version="0.4.2.3pre.160319a1"
+ NS1:version="0.4.2.3pre.160328a1"
NS1:type="2"
NS1:multiprocessCompatible="true"
NS1:description="Tab browsing with an added boost."
diff --git a/modules/AsyncUtils.jsm b/modules/AsyncUtils.jsm
index 73538d1..3074d41 100644
--- a/modules/AsyncUtils.jsm
+++ b/modules/AsyncUtils.jsm
@@ -1,4 +1,3 @@
-/* jshint esnext: true */
"use strict";
this.EXPORTED_SYMBOLS = ["AsyncUtils"];
diff --git a/modules/ContentClick.jsm b/modules/ContentClick.jsm
index d15b236..68ee9e4 100644
--- a/modules/ContentClick.jsm
+++ b/modules/ContentClick.jsm
@@ -180,11 +180,6 @@ ContentClickInternal = {
},
getParamsForLink: function(event, linkNode, href, browser, focusedWindow) {
- if (browser.getAttribute("remote") == "true" &&
- TabmixSvc.syncHandlers.has(browser.permanentKey)) {
- let handler = TabmixSvc.syncHandlers.get(browser.permanentKey);
- linkNode = handler.wrapNode(linkNode);
- }
let wrappedNode = this.getWrappedNode(linkNode, focusedWindow, event.button === 0);
return this._getParamsForLink(event, wrappedNode, href, browser);
},
diff --git a/modules/ContextMenu.jsm b/modules/ContextMenu.jsm
index a8c75cf..d4a675f 100644
--- a/modules/ContextMenu.jsm
+++ b/modules/ContextMenu.jsm
@@ -2,7 +2,7 @@
this.EXPORTED_SYMBOLS = ["ContextMenu"];
-const {classes: Cc, interfaces: Ci, utils: Cu} = Components;
+const {interfaces: Ci, utils: Cu} = Components;
Cu.import("resource://gre/modules/XPCOMUtils.jsm", this);
Cu.import("resource://gre/modules/Services.jsm");
@@ -12,11 +12,8 @@ XPCOMUtils.defineLazyModuleGetter(this, "TabmixSvc",
this.ContextMenu = {
getSelectedLinks: function(content, check) {
- // get focused window selection
- let fm = Cc["@mozilla.org/focus-manager;1"].getService(Ci.nsIFocusManager);
- let focusedWindow = {};
- fm.getFocusedElementForWindow(content, true, focusedWindow);
- let selectionObject = focusedWindow.value.getSelection();
+ let doc = content.document;
+ let selectionObject = doc.getSelection();
if (selectionObject.isCollapsed) // nothing selected
return [];
@@ -31,7 +28,6 @@ this.ContextMenu = {
};
// do urlSecurityCheck for each link in the treeWalker....
- let doc = content.document;
let secMan = Services.scriptSecurityManager;
let securityCheck = function(url) {
if (!url)
diff --git a/modules/DocShellCapabilities.jsm b/modules/DocShellCapabilities.jsm
index 795efc1..e6e1d51 100644
--- a/modules/DocShellCapabilities.jsm
+++ b/modules/DocShellCapabilities.jsm
@@ -36,15 +36,12 @@ this.DocShellCapabilities = {
return this.caps.filter(cap => !browser.docShell["allow" + cap]);
}
- if (tab.ownerDocument.defaultView.__SSi) {
+ let window = tab.ownerDocument.defaultView;
+ if (window && window.__SSi) {
let tabState = TabState.collect(tab);
return tabState.disallow || "";
}
- try {
- let handler = TabmixSvc.syncHandlers.get(browser.permanentKey);
- return handler.getCapabilities();
- } catch (ex) { }
return "";
},
diff --git a/modules/DownloadLastDir.jsm b/modules/DownloadLastDir.jsm
index c9434a2..a9846ca 100644
--- a/modules/DownloadLastDir.jsm
+++ b/modules/DownloadLastDir.jsm
@@ -1,6 +1,5 @@
/// "use strict";
-/* jshint strict: false */
/* eslint strict: 0 */
this.EXPORTED_SYMBOLS = ["TabmixDownloadLastDir"];
diff --git a/modules/DynamicRules.jsm b/modules/DynamicRules.jsm
index b919bd1..d5e966d 100644
--- a/modules/DynamicRules.jsm
+++ b/modules/DynamicRules.jsm
@@ -284,7 +284,7 @@ this.DynamicRules = {
this.createTemplates();
function updateButtonHeight(Tabmix, rules) {
- let newHeight = Tabmix.getButtonsHeight();
+ let newHeight = Tabmix.getButtonsHeight(true);
["new-tab", "pb-indicator", "scrollbutton", "toolbarbutton"].forEach(name => {
let rule = rules[name + "-height"];
if (typeof rule == "object") {
diff --git a/modules/MergeWindows.jsm b/modules/MergeWindows.jsm
index 1b86a58..7a7382a 100644
--- a/modules/MergeWindows.jsm
+++ b/modules/MergeWindows.jsm
@@ -70,7 +70,7 @@ this.MergeWindows = {
if (tab.hasAttribute("mergeselected")) {
tab.removeAttribute("mergeselected");
tab.label = tab.label.substr(4);
- tabbrowser._tabAttrModified(tab);
+ tabbrowser._tabAttrModified(tab, ["label"]);
} else if (canClose) {
tabbrowser.removeTab(tab);
}
diff --git a/modules/Places.jsm b/modules/Places.jsm
index 0596589..eb6f417 100644
--- a/modules/Places.jsm
+++ b/modules/Places.jsm
@@ -181,9 +181,9 @@ PlacesUtilsInternal = {
' if (TMP_Event) aWhere = TMP_Places.isBookmarklet(aNode.uri) ? "current" :\n' +
' TMP_Places.fixWhereToOpen(TMP_Event, aWhere);\n' +
' else if (aWhere == "current" && !TMP_Places.isBookmarklet(aNode.uri)) {\n' +
- ' let caller = browserWindow.Tabmix.getCallerNameByIndex(2);\n' +
- ' if (caller != "PC_doCommand")\n' +
+ ' if (!browserWindow.Tabmix.callerTrace("PC_doCommand")) {\n' +
' aWhere = TMP_Places.fixWhereToOpen(null, aWhere);\n' +
+ ' }\n' +
' }\n' +
' }\n' +
' if (browserWindow && aWhere == "current")\n' +
diff --git a/modules/Services.jsm b/modules/Services.jsm
index c567c70..b5481b8 100644
--- a/modules/Services.jsm
+++ b/modules/Services.jsm
@@ -155,8 +155,6 @@ this.TabmixSvc = {
}
},
- syncHandlers: new WeakMap(),
-
windowStartup: {
QueryInterface: XPCOMUtils.generateQI([Ci.nsIObserver,
Ci.nsISupportsWeakReference]),
diff --git a/modules/Utils.jsm b/modules/Utils.jsm
index 92ce1f4..be8167a 100644
--- a/modules/Utils.jsm
+++ b/modules/Utils.jsm
@@ -6,12 +6,12 @@ const {classes: Cc, interfaces: Ci, utils: Cu} = Components;
// Messages that will be received via the Frame Message Manager.
const FMM_MESSAGES = [
- "Tabmix:SetSyncHandler",
"Tabmix:restorePermissionsComplete",
"Tabmix:updateScrollPosition",
"Tabmix:reloadTab",
"Tabmix:getOpener",
"Tabmix:contentDrop",
+ "Tabmix:contextmenu",
];
Cu.import("resource://gre/modules/XPCOMUtils.jsm");
@@ -59,9 +59,6 @@ this.TabmixUtils = {
let browser = message.target;
let win, tab;
switch (message.name) {
- case "Tabmix:SetSyncHandler":
- TabmixSvc.syncHandlers.set(browser.permanentKey, message.objects.syncHandler);
- break;
case "Tabmix:restorePermissionsComplete":
DocShellCapabilities.update(browser, message.data);
break;
@@ -96,6 +93,12 @@ this.TabmixUtils = {
}
return false;
}
+ case "Tabmix:contextmenu": {
+ win = browser.ownerDocument.defaultView;
+ let links = message.data.links;
+ win.Tabmix.contextMenuLinks = links && links.split("\n") || [];
+ break;
+ }
}
return null;
},
diff --git a/modules/log.jsm b/modules/log.jsm
index ae68f48..cb04e5d 100644
--- a/modules/log.jsm
+++ b/modules/log.jsm
@@ -135,20 +135,6 @@ this.console = {
return fnName;
},
-/*
- _nameFromComponentsStack: function(Cs) {
- return Cs.name ||
- Cs.filename.substr(Cs.filename.lastIndexOf("/") + 1) + ":" + Cs.lineNumber;
- },
-
- callerName: function() {
- try {
- var name = this._nameFromComponentsStack(Components.stack.caller.caller);
- } catch (ex) { }
- return name || "";
- },
-*/
-
callerName: function TMP_console_callerName() {
return this.getCallerNameByIndex(1);
},
@@ -177,14 +163,24 @@ this.console = {
return false;
},
- stackTrace: function TMP_console_stackTrace() {
- let stack = this._getStackExcludingInternal().join("\n");
+ callerTrace: function TMP_console_callerTrace(...args) {
+ let stack = this._getStackExcludingInternal();
- return {
+ let stackUtil = {
contain: function(...names) {
- return names.some(name => stack.indexOf(name) > -1);
+ if (Array.isArray(names[0])) {
+ names = names[0];
+ }
+ let _isCallerInList = function(caller) {
+ return names.some(name => caller.startsWith(name + "@"));
+ };
+ return stack.some(_isCallerInList);
},
};
+ if (args.length) {
+ return stackUtil.contain.apply(null, args);
+ }
+ return stackUtil;
},
/*
--
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