Use PaneContainerModel::$activePaneItem for 'active-item-changed' events

Yay behaviors
This commit is contained in:
Nathan Sobo
2014-01-09 18:58:01 -07:00
parent 5a3353ec28
commit 9aefafb831
3 changed files with 8 additions and 16 deletions

View File

@@ -50,7 +50,7 @@
"temp": "0.5.0",
"text-buffer": "0.12.0",
"underscore-plus": "0.6.1",
"theorist": "~0.10.0",
"theorist": "~0.11.0",
"delegato": "~0.4.0",
"mixto": "~0.4.0"
},

View File

@@ -14,6 +14,9 @@ class PaneContainerModel extends Model
focusContext: null
activePane: null
@behavior 'activePaneItem', ->
@$activePane.flatMapLatest (activePane) -> activePane?.$activeItem
constructor: ->
super

View File

@@ -26,27 +26,13 @@ class PaneContainer extends View
@model = new PaneContainerModel({root: params?.root?.model})
@subscribe @model.$root, 'value', @onRootChanged
@subscribe @model.$activePaneItem.changes, 'value', @onActivePaneItemChanged
@subscribe @model, 'surrendered-focus', @onSurrenderedFocus
@subscribe this, 'pane:attached', (event, pane) =>
@triggerActiveItemChange() if @getActivePane() is pane
@subscribe this, 'pane:removed', (event, pane) =>
@triggerActiveItemChange() unless @getActivePane()?
@subscribe this, 'pane:became-active', =>
@triggerActiveItemChange()
@subscribe this, 'pane:active-item-changed', (event, item) =>
@triggerActiveItemChange() if @getActivePaneItem() is item
viewForModel: (model) ->
viewClass = model.getViewClass()
model._view ?= new viewClass(model)
triggerActiveItemChange: ->
@trigger 'pane-container:active-pane-item-changed', [@getActivePaneItem()]
serializeParams: ->
model: @model.serialize()
@@ -68,6 +54,9 @@ class PaneContainer extends View
@append(view)
view.makeActive?()
onActivePaneItemChanged: (activeItem) =>
@trigger 'pane-container:active-pane-item-changed', [activeItem]
onSurrenderedFocus: =>
atom?.workspaceView?.focus()