From a8ddc530a2bdc41a3ee158d67bb9a36064b9c0ed Mon Sep 17 00:00:00 2001 From: Nathan Sobo Date: Mon, 13 Jan 2014 18:20:55 -0700 Subject: [PATCH] Emit a pane-item-destroyed event from the workspace model MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit …Instead of calling itemDestroyed on the workspace view via a DOM query --- src/pane-container-view.coffee | 3 --- src/pane-container.coffee | 3 +++ src/pane-view.coffee | 4 ---- src/pane.coffee | 2 +- src/workspace-view.coffee | 4 ++-- src/workspace.coffee | 7 +++++++ 6 files changed, 13 insertions(+), 10 deletions(-) diff --git a/src/pane-container-view.coffee b/src/pane-container-view.coffee index 215ebfffb..e3d5431b3 100644 --- a/src/pane-container-view.coffee +++ b/src/pane-container-view.coffee @@ -34,9 +34,6 @@ class PaneContainerView extends View ### Public ### - itemDestroyed: (item) -> - @trigger 'item-destroyed', [item] - getRoot: -> @children().first().view() diff --git a/src/pane-container.coffee b/src/pane-container.coffee index 28ff0d29e..6b8fd1d80 100644 --- a/src/pane-container.coffee +++ b/src/pane-container.coffee @@ -68,3 +68,6 @@ class PaneContainer extends Model destroyEmptyPanes: -> pane.destroy() for pane in @getPanes() when pane.items.length is 0 + + itemDestroyed: (item) -> + @emit 'item-destroyed', item diff --git a/src/pane-view.coffee b/src/pane-view.coffee index fe9da3f31..54000d703 100644 --- a/src/pane-view.coffee +++ b/src/pane-view.coffee @@ -54,7 +54,6 @@ class PaneView extends View @subscribe @model, 'item-removed', @onItemRemoved @subscribe @model, 'item-moved', @onItemMoved @subscribe @model, 'before-item-destroyed', @onBeforeItemDestroyed - @subscribe @model, 'item-destroyed', @onItemDestroyed @subscribe @model, 'activated', @onActivated @subscribe @model.$active, @onActiveStatusChanged @@ -181,9 +180,6 @@ class PaneView extends View @unsubscribe(item) if typeof item.off is 'function' @trigger 'pane:before-item-destroyed', [item] - onItemDestroyed: (item) => - @getContainer()?.itemDestroyed(item) - # Private: activeItemTitleChanged: => @trigger 'pane:active-item-title-changed' diff --git a/src/pane.coffee b/src/pane.coffee index dc8fd86fd..346f46bce 100644 --- a/src/pane.coffee +++ b/src/pane.coffee @@ -142,7 +142,7 @@ class Pane extends Model @activateNextItem() if item is @activeItem and @items.length > 1 @items.splice(index, 1) @emit 'item-removed', item, index, destroying - @emit 'item-destroyed', item if destroying + @container?.itemDestroyed(item) if destroying @destroy() if @items.length is 0 # Public: Moves the given item to the specified index. diff --git a/src/workspace-view.coffee b/src/workspace-view.coffee index ae35dc085..5ab19c9bc 100644 --- a/src/workspace-view.coffee +++ b/src/workspace-view.coffee @@ -75,7 +75,7 @@ class WorkspaceView extends View @panes = panes @destroyedItemUris = [] - @subscribe @panes, 'item-destroyed', @onPaneItemDestroyed + @subscribe @model, 'pane-item-destroyed', @onPaneItemDestroyed @updateTitle() @@ -359,7 +359,7 @@ class WorkspaceView extends View super # Private: Adds the destroyed item's uri to the list of items to reopen. - onPaneItemDestroyed: (e, item) => + onPaneItemDestroyed: (item) => if uri = item.getUri?() @destroyedItemUris.push(uri) diff --git a/src/workspace.coffee b/src/workspace.coffee index 255015c58..7b283b7d1 100644 --- a/src/workspace.coffee +++ b/src/workspace.coffee @@ -11,6 +11,10 @@ class Workspace extends Model paneContainer: -> new PaneContainer fullScreen: false + constructor: -> + super + @subscribe @paneContainer, 'item-destroyed', @onPaneItemDestroyed + deserializeParams: (params) -> params.paneContainer = PaneContainer.deserialize(params.paneContainer) params @@ -18,3 +22,6 @@ class Workspace extends Model serializeParams: -> paneContainer: @paneContainer.serialize() fullScreen: atom.isFullScreen() + + onPaneItemDestroyed: (item) => + @emit 'pane-item-destroyed', item