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.

This commit is contained in:
liuxiong332
2015-03-09 21:50:17 +08:00
parent 026eb40872
commit 71a279745c
2 changed files with 15 additions and 3 deletions

View File

@@ -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)

View File

@@ -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')