From fd48eb6c968cff8165f0d364241cd4bd573f88ec Mon Sep 17 00:00:00 2001 From: coderaiser Date: Fri, 30 Jan 2015 07:40:39 -0500 Subject: [PATCH] fix(listeners) dragndrop: upload files from downloads bar --- lib/client/listeners.js | 27 ++++++++++++++++++++------- 1 file changed, 20 insertions(+), 7 deletions(-) diff --git a/lib/client/listeners.js b/lib/client/listeners.js index b7604794..7f7032b0 100644 --- a/lib/client/listeners.js +++ b/lib/client/listeners.js @@ -264,25 +264,38 @@ var Util, DOM, CloudFunc, CloudCmd; var panels = DOM.getByClassAll('panel'), forEach = Array.prototype.forEach, - preventDefault = function (event) { - event.preventDefault(); - }, - toggle = function () { + toggle = function() { forEach.call(panels, function(panel) { DOM.toggleClass(panel, 'selected-panel'); }); }, - onDrop = function (event) { + onDrop = function(event) { var files = event.dataTransfer.files; - preventDefault(event); + event.preventDefault(); DOM.uploadFiles(files); + }, + /* + * In Mac OS Chrome dropEffect = 'none' + * so drop do not firing up when try + * to upload file from download bar + */ + onDragOver = function(event) { + var dataTransfer = event.dataTransfer, + effectAllowed = dataTransfer.effectAllowed; + + if (/move|linkMove/.test(effectAllowed)) + dataTransfer.dropEffect = 'move'; + else + dataTransfer.dropEffect = 'copy'; + + event.preventDefault(); }; Events.add(['dragenter', 'dragleave', 'drop'], toggle); forEach.call(panels, function(panel) { - Events.add('dragover', panel, preventDefault) + Events.add('dragover', panel, onDragOver) .add('drop', panel, onDrop); }); }