mirror of
https://github.com/atom/atom.git
synced 2026-02-17 01:51:54 -05:00
Merge branch 'master' into ns-telepathic-atom-global
Conflicts: package.json
This commit is contained in:
@@ -31,6 +31,7 @@ class Pane extends View
|
||||
|
||||
# Private:
|
||||
initialize: (args...) ->
|
||||
@items = []
|
||||
if args[0] instanceof telepath.Document
|
||||
@state = args[0]
|
||||
@items = _.compact @state.get('items').map (item) ->
|
||||
@@ -43,6 +44,8 @@ class Pane extends View
|
||||
deserializer: 'Pane'
|
||||
items: @items.map (item) -> item.getState?() ? item.serialize()
|
||||
|
||||
@handleItemEvents(item) for item in @items
|
||||
|
||||
@subscribe @state.get('items'), 'changed', ({index, removedValues, insertedValues, siteId}) =>
|
||||
return if siteId is @state.siteId
|
||||
for itemState in removedValues
|
||||
@@ -188,8 +191,14 @@ class Pane extends View
|
||||
@state.get('items').splice(index, 0, item.getState?() ? item.serialize()) if options.updateState ? true
|
||||
@items.splice(index, 0, item)
|
||||
@trigger 'pane:item-added', [item, index]
|
||||
@handleItemEvents(item)
|
||||
item
|
||||
|
||||
handleItemEvents: (item) ->
|
||||
if _.isFunction(item.on)
|
||||
@subscribe item, 'destroyed', =>
|
||||
@destroyItem(item) if @state.isAlive()
|
||||
|
||||
# Public: Remove the currently active item.
|
||||
destroyActiveItem: =>
|
||||
@destroyItem(@activeItem)
|
||||
@@ -197,11 +206,11 @@ class Pane extends View
|
||||
|
||||
# Public: Remove the specified item.
|
||||
destroyItem: (item) ->
|
||||
@unsubscribe(item) if _.isFunction(item.off)
|
||||
@trigger 'pane:before-item-destroyed', [item]
|
||||
container = @getContainer()
|
||||
|
||||
if @promptToSaveItem(item)
|
||||
container.itemDestroyed(item)
|
||||
@getContainer()?.itemDestroyed(item)
|
||||
@removeItem(item)
|
||||
item.destroy?()
|
||||
true
|
||||
|
||||
Reference in New Issue
Block a user