Add rootView.deactivateExtension

This commit is contained in:
Corey Johnson
2012-07-25 15:45:21 -07:00
parent d737199299
commit 470e8a6191
3 changed files with 13 additions and 1 deletions

View File

@@ -397,6 +397,14 @@ describe "RootView", ->
expect(-> rootView.activateExtension({ activate: -> })).toThrow()
describe "deactivation", ->
it "is deactivated and removed from the extension list", ->
rootView.activateExtension(extension)
expect(rootView.extensions[extension.name]).toBeTruthy()
spyOn(extension, "deactivate").andCallThrough()
rootView.deactivateExtension(extension)
expect(extension.deactivate).toHaveBeenCalled()
expect(rootView.extensions[extension.name]).toBeFalsy()
it "is deactivated when the rootView is deactivated", ->
rootView.activateExtension(extension)
spyOn(extension, "deactivate").andCallThrough()

View File

@@ -80,7 +80,7 @@ describe "TreeView", ->
describe "when the prototypes deactivate method is called", ->
it "calls the deactivate on tree view instance", ->
spyOn(treeView, "deactivate").andCallThrough()
TreeView.deactivate()
rootView.deactivateExtension(TreeView)
expect(treeView.deactivate).toHaveBeenCalled()
it "restores expanded directories and selected file when deserialized", ->

View File

@@ -87,6 +87,10 @@ class RootView extends View
@extensions[extension.name] = extension
extension.activate(this, @extensionStates[extension.name])
deactivateExtension: (extension) ->
extension.deactivate?()
delete @extensions[extension.name]
deactivate: ->
atom.rootViewStates[$windowNumber] = JSON.stringify(@serialize())
extension.deactivate?() for name, extension of @extensions