From 98393a653e2a8582964f0640438166e6d7bcab9d Mon Sep 17 00:00:00 2001 From: Corey Johnson Date: Fri, 29 Jun 2012 11:21:14 -0700 Subject: [PATCH] Destroy editSession by calling a method on the project instead of triggering a `destroy` event that the project listens to. --- src/app/edit-session.coffee | 4 ++-- src/app/project.coffee | 14 +++++++++----- 2 files changed, 11 insertions(+), 7 deletions(-) diff --git a/src/app/edit-session.coffee b/src/app/edit-session.coffee index d549faf7b..42da5e430 100644 --- a/src/app/edit-session.coffee +++ b/src/app/edit-session.coffee @@ -30,7 +30,7 @@ class EditSession softTabs: true softWrap: false - constructor: ({@buffer, @tabText, @autoIndent, @softTabs, @softWrap}) -> + constructor: ({@project, @buffer, @tabText, @autoIndent, @softTabs, @softWrap}) -> @id = @constructor.idCounter++ @softTabs ?= true @displayBuffer = new DisplayBuffer(@buffer, { @tabText }) @@ -54,7 +54,7 @@ class EditSession @buffer.off ".edit-session-#{@id}" @displayBuffer.off ".edit-session-#{@id}" @displayBuffer.destroy() - @trigger "destroy" + @project.removeEditSession(this) serialize: -> buffer: @buffer.getPath() diff --git a/src/app/project.coffee b/src/app/project.coffee index d4abef611..6b7e92d41 100644 --- a/src/app/project.coffee +++ b/src/app/project.coffee @@ -83,21 +83,25 @@ class Project buffer = @buildBuffer() editSession = new EditSession + project: this buffer: buffer tabText: @getTabText() autoIndent: @getAutoIndent() softTabs: @getSoftTabs() softWrap: @getSoftWrap() - editSession.on 'destroy', => - @editSessions = _.without(@editSessions, editSession) - bufferIsOrphaned = not _.find @editSessions, (e) -> e.buffer == editSession.buffer - editSession.buffer.destroy() if bufferIsOrphaned - @editSessions.push editSession @trigger 'new-edit-session', editSession editSession + removeEditSession: (editSession) -> + _.remove(@editSessions, editSession) + @destroyBufferIfOrphaned(editSession.buffer) + + destroyBufferIfOrphaned: (buffer) -> + unless _.find(@editSessions, (editSession) -> editSession.buffer == buffer) + buffer.destroy() + buildBuffer: (filePath) -> buffer = new Buffer(filePath) @trigger 'new-buffer', buffer