From 71a279745c0736467c616fd5ef7e48a37ebb78d5 Mon Sep 17 00:00:00 2001 From: liuxiong332 Date: Mon, 9 Mar 2015 21:50:17 +0800 Subject: [PATCH] invalidate document's drag and drop event to prevent the browser's default open url link. add listener for pane's drop event to open dragged files. --- src/pane-element.coffee | 14 ++++++++++++++ src/window-event-handler.coffee | 4 +--- 2 files changed, 15 insertions(+), 3 deletions(-) diff --git a/src/pane-element.coffee b/src/pane-element.coffee index f626e9fad..df4335e4c 100644 --- a/src/pane-element.coffee +++ b/src/pane-element.coffee @@ -1,6 +1,7 @@ {CompositeDisposable} = require 'event-kit' {$, callAttachHooks, callRemoveHooks} = require './space-pen-extensions' PaneView = require './pane-view' +_ = require 'underscore-plus' class PaneElement extends HTMLElement attached: false @@ -37,8 +38,21 @@ class PaneElement extends HTMLElement handleBlur = (event) => @model.blur() unless @contains(event.relatedTarget) + handleDragOver = (event) => + event.preventDefault() + event.stopPropagation() + + handleDrop = (event) => + event.preventDefault() + event.stopPropagation() + @getModel().activate() + pathsToOpen = _.pluck(event.dataTransfer.files, 'path') + atom.open({pathsToOpen}) if pathsToOpen.length > 0 + @addEventListener 'focus', handleFocus, true @addEventListener 'blur', handleBlur, true + @addEventListener 'dragover', handleDragOver + @addEventListener 'drop', handleDrop createSpacePenShim: -> @__spacePenView = new PaneView(this) diff --git a/src/window-event-handler.coffee b/src/window-event-handler.coffee index 1384f0c4a..506fc7d73 100644 --- a/src/window-event-handler.coffee +++ b/src/window-event-handler.coffee @@ -1,6 +1,5 @@ path = require 'path' {$} = require './space-pen-extensions' -_ = require 'underscore-plus' {Disposable} = require 'event-kit' ipc = require 'ipc' shell = require 'shell' @@ -134,12 +133,11 @@ class WindowEventHandler onDrop: (event) -> event.preventDefault() event.stopPropagation() - pathsToOpen = _.pluck(event.dataTransfer.files, 'path') - atom.open({pathsToOpen}) if pathsToOpen.length > 0 onDragOver: (event) -> event.preventDefault() event.stopPropagation() + event.dataTransfer.dropEffect = 'none' openLink: ({target, currentTarget}) -> location = target?.getAttribute('href') or currentTarget?.getAttribute('href')