mirror of
https://github.com/atom/atom.git
synced 2026-01-26 23:38:48 -05:00
Add spec for dragging/dropping tab in the same editor
This commit is contained in:
@@ -79,29 +79,34 @@ class TabView extends SortableList
|
||||
fromEditor = fromPane.find('.editor').view()
|
||||
|
||||
if fromPaneIndex == toPaneIndex
|
||||
toPane = fromPane
|
||||
toEditor = fromEditor
|
||||
droppedNearTab = @getSortableElement(event)
|
||||
draggedTab = fromPane.find(".#{TabView.viewClass()} .sortable:eq(#{previousDraggedTabIndex})")
|
||||
unless draggedTab.is(droppedNearTab)
|
||||
fromIndex = draggedTab.index()
|
||||
toIndex = droppedNearTab.index()
|
||||
toIndex++ if fromIndex > toIndex
|
||||
fromEditor.moveEditSessionAtIndex(fromIndex, toIndex)
|
||||
else
|
||||
toPane = $(rootView.find('.pane')[toPaneIndex])
|
||||
toEditor = toPane.find('.editor').view()
|
||||
|
||||
droppedNearTab = @getSortableElement(event)
|
||||
draggedTab = fromPane.find(".#{TabView.viewClass()} .sortable:eq(#{previousDraggedTabIndex})")
|
||||
droppedNearTab = @getSortableElement(event)
|
||||
draggedTab = fromPane.find(".#{TabView.viewClass()} .sortable:eq(#{previousDraggedTabIndex})")
|
||||
|
||||
return if draggedTab.is(droppedNearTab)
|
||||
if fromPaneIndex != toPaneIndex
|
||||
return if @containsEditSession(toEditor, fromEditor.editSessions[draggedTab.index()])
|
||||
return if draggedTab.is(droppedNearTab)
|
||||
if fromPaneIndex != toPaneIndex
|
||||
return if @containsEditSession(toEditor, fromEditor.editSessions[draggedTab.index()])
|
||||
|
||||
draggedTab.remove()
|
||||
draggedTab.insertAfter(droppedNearTab)
|
||||
currentDraggedTabIndex = draggedTab.index()
|
||||
fromEditor.transferEditSessionAtIndex(previousDraggedTabIndex, currentDraggedTabIndex, toEditor)
|
||||
draggedTab.remove()
|
||||
draggedTab.insertAfter(droppedNearTab)
|
||||
currentDraggedTabIndex = draggedTab.index()
|
||||
fromEditor.transferEditSessionAtIndex(previousDraggedTabIndex, currentDraggedTabIndex, toEditor)
|
||||
|
||||
if !fromPane.find('.tab').length
|
||||
fromPane.view().remove()
|
||||
else if fromPaneIndex != toPaneIndex && draggedTab.hasClass('active')
|
||||
fromEditor.setActiveEditSessionIndex(0)
|
||||
if !fromPane.find('.tab').length
|
||||
fromPane.view().remove()
|
||||
else if fromPaneIndex != toPaneIndex && draggedTab.hasClass('active')
|
||||
fromEditor.setActiveEditSessionIndex(0)
|
||||
|
||||
@setActiveTab(currentDraggedTabIndex)
|
||||
toEditor.setActiveEditSessionIndex(currentDraggedTabIndex)
|
||||
toEditor.focus()
|
||||
@setActiveTab(currentDraggedTabIndex)
|
||||
toEditor.setActiveEditSessionIndex(currentDraggedTabIndex)
|
||||
toEditor.focus()
|
||||
|
||||
@@ -157,3 +157,26 @@ describe "TabView", ->
|
||||
editor.moveEditSessionAtIndex(1, 0)
|
||||
expect(tabs.find('.tab:eq(0) .file-name').text()).toBe "sample.js"
|
||||
expect(tabs.find('.tab:eq(1) .file-name').text()).toBe "sample.txt"
|
||||
|
||||
describe "dragging and dropping tabs", ->
|
||||
describe "when a tab is dragged from and dropped onto the same editor", ->
|
||||
it "moves the edit session and updates the order of the tabs", ->
|
||||
expect(tabs.find('.tab:eq(0) .file-name').text()).toBe "sample.js"
|
||||
expect(tabs.find('.tab:eq(1) .file-name').text()).toBe "sample.txt"
|
||||
|
||||
sortableElement = [tabs.find('.tab:eq(0)')]
|
||||
spyOn(tabs, 'getSortableElement').andCallFake -> sortableElement[0]
|
||||
event = $.Event()
|
||||
event.target = tabs[0]
|
||||
event.originalEvent =
|
||||
dataTransfer:
|
||||
data: {}
|
||||
setData: (key, value) -> @data[key] = value
|
||||
getData: (key) -> @data[key]
|
||||
|
||||
tabs.onDragStart(event)
|
||||
sortableElement = [tabs.find('.tab:eq(1)')]
|
||||
tabs.onDrop(event)
|
||||
|
||||
expect(tabs.find('.tab:eq(0) .file-name').text()).toBe "sample.txt"
|
||||
expect(tabs.find('.tab:eq(1) .file-name').text()).toBe "sample.js"
|
||||
|
||||
Reference in New Issue
Block a user