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); }); }