Only respond to drag-drop of tabs in tab bar.

This commit is contained in:
Cheng Zhao
2013-04-04 16:23:46 +08:00
parent f455379a17
commit f37265978e
2 changed files with 28 additions and 0 deletions

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') == 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') == 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()