mirror of
https://github.com/atom/atom.git
synced 2026-02-14 16:45:14 -05:00
@@ -549,6 +549,20 @@ class Editor extends View
|
||||
"Cancel"
|
||||
)
|
||||
|
||||
moveEditSessionToIndex: (fromIndex, toIndex) ->
|
||||
return if fromIndex is toIndex
|
||||
editSession = @editSessions.splice(fromIndex, 1)
|
||||
@editSessions.splice(toIndex, 0, editSession[0])
|
||||
@trigger 'editor:edit-session-order-changed', [editSession, fromIndex, toIndex]
|
||||
@setActiveEditSessionIndex(toIndex)
|
||||
|
||||
moveEditSessionToEditor: (fromIndex, toEditor, toIndex) ->
|
||||
fromEditSession = @editSessions[fromIndex]
|
||||
toEditSession = fromEditSession.copy()
|
||||
@destroyEditSessionIndex(fromIndex)
|
||||
toEditor.edit(toEditSession)
|
||||
toEditor.moveEditSessionToIndex(toEditor.getActiveEditSessionIndex(), toIndex)
|
||||
|
||||
activateEditSessionForPath: (path) ->
|
||||
for editSession, index in @editSessions
|
||||
if editSession.buffer.getPath() == path
|
||||
|
||||
@@ -73,6 +73,7 @@ class Keymap
|
||||
return true unless bindingSetsForFirstKeystroke?
|
||||
|
||||
currentNode = $(event.target)
|
||||
currentNode = rootView if currentNode is $('body')[0]
|
||||
while currentNode.length
|
||||
candidateBindingSets = @bindingSetsForNode(currentNode, bindingSetsForFirstKeystroke)
|
||||
for bindingSet in candidateBindingSets
|
||||
@@ -99,6 +100,7 @@ class Keymap
|
||||
b.specificity - a.specificity
|
||||
|
||||
triggerCommandEvent: (keyEvent, commandName) ->
|
||||
keyEvent.target = rootView[0] if keyEvent.target == document.body and window.rootView
|
||||
commandEvent = $.Event(commandName)
|
||||
commandEvent.keyEvent = keyEvent
|
||||
aborted = false
|
||||
|
||||
@@ -18,7 +18,7 @@ class RootView extends View
|
||||
disabledPackages: []
|
||||
|
||||
@content: ->
|
||||
@div id: 'root-view', tabindex: 0, =>
|
||||
@div id: 'root-view', =>
|
||||
@div id: 'horizontal', outlet: 'horizontal', =>
|
||||
@div id: 'vertical', outlet: 'vertical', =>
|
||||
@div id: 'panes', outlet: 'panes'
|
||||
@@ -261,3 +261,11 @@ class RootView extends View
|
||||
|
||||
eachBuffer: (callback) ->
|
||||
@project.eachBuffer(callback)
|
||||
|
||||
indexOfPane: (pane) ->
|
||||
index = -1
|
||||
for p, idx in @panes.find('.pane')
|
||||
if pane.is(p)
|
||||
index = idx
|
||||
break
|
||||
index
|
||||
|
||||
53
src/app/sortable-list.coffee
Normal file
53
src/app/sortable-list.coffee
Normal file
@@ -0,0 +1,53 @@
|
||||
{View} = require 'space-pen'
|
||||
$ = require 'jquery'
|
||||
|
||||
module.exports =
|
||||
class SortableList extends View
|
||||
@viewClass: -> 'sortable-list'
|
||||
|
||||
initialize: ->
|
||||
@on 'dragstart', '.sortable', @onDragStart
|
||||
@on 'dragend', '.sortable', @onDragEnd
|
||||
@on 'dragover', '.sortable', @onDragOver
|
||||
@on 'dragenter', '.sortable', @onDragEnter
|
||||
@on 'dragleave', '.sortable', @onDragLeave
|
||||
@on 'drop', '.sortable', @onDrop
|
||||
|
||||
onDragStart: (event) =>
|
||||
return false if !@shouldAllowDrag(event)
|
||||
|
||||
el = @getSortableElement(event)
|
||||
el.addClass 'is-dragging'
|
||||
event.originalEvent.dataTransfer.setData 'sortable-index', el.index()
|
||||
|
||||
onDragEnd: (event) =>
|
||||
@getSortableElement(event).removeClass 'is-dragging'
|
||||
|
||||
onDragEnter: (event) =>
|
||||
event.preventDefault()
|
||||
|
||||
onDragOver: (event) =>
|
||||
event.preventDefault()
|
||||
@getSortableElement(event).addClass 'is-drop-target'
|
||||
|
||||
onDragLeave: (event) =>
|
||||
@getSortableElement(event).removeClass 'is-drop-target'
|
||||
|
||||
onDrop: (event) =>
|
||||
return false if !@shouldAllowDrop(event)
|
||||
event.stopPropagation()
|
||||
@find('.is-drop-target').removeClass 'is-drop-target'
|
||||
|
||||
shouldAllowDrag: (event) ->
|
||||
true
|
||||
|
||||
shouldAllowDrop: (event) ->
|
||||
true
|
||||
|
||||
getDroppedElement: (event) ->
|
||||
idx = event.originalEvent.dataTransfer.getData 'sortable-index'
|
||||
@find ".sortable:eq(#{idx})"
|
||||
|
||||
getSortableElement: (event) ->
|
||||
el = $(event.target)
|
||||
if !el.hasClass('sortable') then el.closest('.sortable') else el
|
||||
Reference in New Issue
Block a user