[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