Merge pull request #8420 from jssln/gutterPolish

Destroy a TextEditor's Gutters when it is destroyed
This commit is contained in:
Nathan Sobo
2015-08-21 14:43:17 -06:00
2 changed files with 16 additions and 1 deletions

View File

@@ -50,3 +50,13 @@ describe 'GutterContainer', ->
otherGutterContainer = new GutterContainer fakeOtherTextEditor
gutter = new Gutter 'gutter-name', otherGutterContainer
expect(gutterContainer.removeGutter.bind(null, gutter)).toThrow()
describe '::destroy', ->
it 'clears its array of gutters and destroys custom gutters', ->
newGutter = gutterContainer.addGutter {'test-gutter', priority: 1}
newGutterSpy = jasmine.createSpy()
newGutter.onDidDestroy(newGutterSpy)
gutterContainer.destroy()
expect(newGutterSpy).toHaveBeenCalled()
expect(gutterContainer.getGutters()).toEqual []

View File

@@ -13,7 +13,12 @@ class GutterContainer
@emitter = new Emitter
destroy: ->
@gutters = null
# Create a copy, because `Gutter::destroy` removes the gutter from
# GutterContainer's @gutters.
guttersToDestroy = @gutters.slice(0)
for gutter in guttersToDestroy
gutter.destroy() if gutter.name isnt 'line-number'
@gutters = []
@emitter.dispose()
# Creates and returns a {Gutter}.