[Pkg-mozext-commits] [tabmixplus] 20/147: Follow up bug 92737 - Part 2 and 3 - Open multiple tabs when multiple items are dropped on content area
David Prévot
taffit at moszumanska.debian.org
Sat Aug 5 15:27:32 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 139506d29b6bef1b8aac31b83dc25ab36a86b8fb
Author: onemen <tabmix.onemen at gmail.com>
Date: Sun Oct 30 22:58:42 2016 +0200
Follow up bug 92737 - Part 2 and 3 - Open multiple tabs when multiple items are dropped on content area
---
chrome/content/minit/tablib.js | 15 ++++++++++++++-
chrome/content/scripts/content.js | 20 +++++++++++++++-----
modules/Utils.jsm | 19 +++++++++++++------
3 files changed, 42 insertions(+), 12 deletions(-)
diff --git a/chrome/content/minit/tablib.js b/chrome/content/minit/tablib.js
index 68d9583..270a916 100644
--- a/chrome/content/minit/tablib.js
+++ b/chrome/content/minit/tablib.js
@@ -562,7 +562,17 @@ var tablib = { // eslint-disable-line
'tablib.contentAreaOnDrop(event, url, postData.value);', {check: TabmixSvc.isPaleMoon}
)._replace(
'loadURI(data.url, null, data.postData, false);',
- 'tablib.contentAreaOnDrop(event, data.url, data.postData);', {check: !TabmixSvc.isPaleMoon}
+ 'tablib.contentAreaOnDrop(event, data.url, data.postData);',
+ {check: !Tabmix.isVersion(520) && !TabmixSvc.isPaleMoon}
+ )._replace(
+ 'let lastLocationChange = gBrowser.selectedBrowser.lastLocationChange;',
+ 'let tabmixContentDrop = event ? event.tabmixContentDrop : links[0].tabmixContentDrop;\n ' +
+ '$&',
+ {check: Tabmix.isVersion(520) && !TabmixSvc.isPaleMoon}
+ )._replace(
+ 'replace: true',
+ 'replace: (tabmixContentDrop || tablib.whereToOpenDrop(event, urls[0])) != "tab"',
+ {check: Tabmix.isVersion(520) && !TabmixSvc.isPaleMoon}
).toCode();
// update current browser
gBrowser.selectedBrowser.droppedLinkHandler = handleDroppedLink;
@@ -1900,6 +1910,9 @@ var tablib = { // eslint-disable-line
},
whereToOpenDrop: function(aEvent, aUri) {
+ if (!aEvent) {
+ return "current";
+ }
let browser = gBrowser.selectedBrowser;
let where = "current";
if (aUri != browser.currentURI.spec) {
diff --git a/chrome/content/scripts/content.js b/chrome/content/scripts/content.js
index 6841546..e101798 100644
--- a/chrome/content/scripts/content.js
+++ b/chrome/content/scripts/content.js
@@ -151,12 +151,22 @@ var TabmixContentHandler = {
},
onDrop: function(event) {
- let uri, name = { };
- let linkHandler = Cc["@mozilla.org/content/dropped-link-handler;1"]
+ let links;
+ const linkName = { };
+ const linkHandler = Cc["@mozilla.org/content/dropped-link-handler;1"]
.getService(Ci.nsIDroppedLinkHandler);
try {
// Pass true to prevent the dropping of javascript:/data: URIs
- uri = linkHandler.dropLink(event, name, true);
+ if (TabmixSvc.version(520)) {
+ links = linkHandler.dropLinks(event, true);
+ // we can not send a message with array of wrapped nsIDroppedLinkItem
+ links = links.map(link => {
+ const {url, name, type} = link;
+ return {url: url, name: name, type: type};
+ });
+ } else {
+ links = [{url: linkHandler.dropLink(event, linkName, true)}];
+ }
} catch (ex) {
return;
}
@@ -168,8 +178,8 @@ var TabmixContentHandler = {
shiftKey: event.shiftKey,
altKey: event.altKey
},
- uri: uri,
- name: name.value
+ links: links,
+ name: linkName.value
};
let result = sendSyncMessage("Tabmix:contentDrop", data);
if (result[0]) {
diff --git a/modules/Utils.jsm b/modules/Utils.jsm
index 0947429..4ff92ac 100644
--- a/modules/Utils.jsm
+++ b/modules/Utils.jsm
@@ -80,14 +80,21 @@ this.TabmixUtils = {
MergeWindows.moveTabsFromPopups(null, tab, message.objects.opener);
break;
case "Tabmix:contentDrop": {
- let {json, uri, name} = message.data;
+ const {json, links, name} = message.data;
+ const url = links[0].url;
win = browser.ownerDocument.defaultView;
- let where = win.tablib.whereToOpenDrop(json, uri);
+ const where = win.tablib.whereToOpenDrop(json, url);
if (where == "tab") {
- // handleDroppedLink call preventDefault
- json.preventDefault = function() {};
- json.tabmixContentDrop = "tab";
- browser.droppedLinkHandler(json, uri, name);
+ if (TabmixSvc.version(520)) {
+ links[0].tabmixContentDrop = "tab";
+ // see browser.xml dropLinks method
+ browser.droppedLinkHandler(null, links);
+ } else {
+ // handleDroppedLink call preventDefault
+ json.preventDefault = function() {};
+ json.tabmixContentDrop = "tab";
+ browser.droppedLinkHandler(json, url, name);
+ }
// prevent default
return true;
}
--
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