From bb9f98e4352a0041fa2595eaa274b53c6047eb23 Mon Sep 17 00:00:00 2001 From: DanyaPostfactum Date: Wed, 6 Feb 2013 12:56:19 +1000 Subject: [PATCH] Detect file dragging --- demo/kitchen-sink/demo.js | 4 +++- lib/ace/mouse/dragdrop.js | 9 +++++++++ 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/demo/kitchen-sink/demo.js b/demo/kitchen-sink/demo.js index 4bc1c35e..812baaa9 100644 --- a/demo/kitchen-sink/demo.js +++ b/demo/kitchen-sink/demo.js @@ -397,7 +397,9 @@ bindCheckbox("highlight_token", function(checked) { /************** dragover ***************************/ event.addListener(container, "dragover", function(e) { - return event.preventDefault(e); + var types = e.dataTransfer.types; + if (types && Array.prototype.indexOf.call(types, 'Files') !== -1) + return event.preventDefault(e); }); event.addListener(container, "drop", function(e) { diff --git a/lib/ace/mouse/dragdrop.js b/lib/ace/mouse/dragdrop.js index 88f526b5..b5c5b167 100644 --- a/lib/ace/mouse/dragdrop.js +++ b/lib/ace/mouse/dragdrop.js @@ -43,6 +43,9 @@ var DragdropHandler = function(mouseHandler) { event.addListener(mouseTarget, "dragenter", function(e) { if (editor.getReadOnly()) return; + var types = e.dataTransfer.types; + if (types && Array.prototype.indexOf.call(types, 'Files') !== -1) + return; counter++; if (!dragSelectionMarker) { range = editor.getSelectionRange(); @@ -59,6 +62,9 @@ var DragdropHandler = function(mouseHandler) { event.addListener(mouseTarget, "dragover", function(e) { if (editor.getReadOnly()) return; + var types = e.dataTransfer.types; + if (types && Array.prototype.indexOf.call(types, 'Files') !== -1) + return; x = e.clientX; y = e.clientY; return event.preventDefault(e); @@ -73,6 +79,9 @@ var DragdropHandler = function(mouseHandler) { event.addListener(mouseTarget, "dragleave", function(e) { if (editor.getReadOnly()) return; + var types = e.dataTransfer.types; + if (types && Array.prototype.indexOf.call(types, 'Files') !== -1) + return; counter--; if (counter > 0) return;