Merge pull request #478 from github/no-drag-drop

Don't respond to drag-drop of external files
This commit is contained in:
Cheng Zhao
2013-04-05 23:39:42 -07:00
3 changed files with 34 additions and 0 deletions

View File

@@ -25,6 +25,12 @@ window.setUpEnvironment = ->
$(document).on 'keydown', keymap.handleKeyEvent
keymap.bindDefaultKeys()
ignoreEvents = (e) ->
e.preventDefault()
e.stopPropagation()
$(document).on 'dragover', ignoreEvents
$(document).on 'drop', ignoreEvents
requireStylesheet 'reset'
requireStylesheet 'atom'
requireStylesheet 'overlay'

View File

@@ -81,6 +81,8 @@ class TabBarView extends View
event.preventDefault()
return
event.originalEvent.dataTransfer.setData 'atom-event', 'true'
el = $(event.target).closest('.sortable')
el.addClass 'is-dragging'
event.originalEvent.dataTransfer.setData 'sortable-index', el.index()
@@ -93,6 +95,11 @@ class TabBarView extends View
@find(".is-dragging").removeClass 'is-dragging'
onDragOver: (event) =>
unless event.originalEvent.dataTransfer.getData('atom-event') is 'true'
event.preventDefault()
event.stopPropagation()
return
event.preventDefault()
currentDropTargetIndex = @find(".is-drop-target").index()
newDropTargetIndex = @getDropTargetIndex(event)
@@ -107,6 +114,11 @@ class TabBarView extends View
onDrop: (event) =>
unless event.originalEvent.dataTransfer.getData('atom-event') is 'true'
event.preventDefault()
event.stopPropagation()
return
event.stopPropagation()
@children('.is-drop-target').removeClass 'is-drop-target'
@children('.drop-target-is-after').removeClass 'drop-target-is-after'

View File

@@ -278,3 +278,19 @@ describe "TabBarView", ->
expect(pane2.getItems()).toEqual [item2b, item1]
expect(pane2.activeItem).toBe item1
expect(pane2.focus).toHaveBeenCalled()
describe 'when a non-tab is dragged to pane', ->
it 'has no effect', ->
expect(tabBar.getTabs().map (tab) -> tab.text()).toEqual ["Item 1", "sample.js", "Item 2"]
expect(pane.getItems()).toEqual [item1, editSession1, item2]
expect(pane.activeItem).toBe item2
spyOn(pane, 'focus')
[dragStartEvent, dropEvent] = buildDragEvents(tabBar.tabAtIndex(0), tabBar.tabAtIndex(0))
tabBar.onDrop(dropEvent)
expect(tabBar.getTabs().map (tab) -> tab.text()).toEqual ["Item 1", "sample.js", "Item 2"]
expect(pane.getItems()).toEqual [item1, editSession1, item2]
expect(pane.activeItem).toBe item2
expect(pane.focus).not.toHaveBeenCalled()