Don’t use Serializable mixin in PaneContainer

This commit is contained in:
Nathan Sobo
2015-09-22 10:46:30 -06:00
parent 8ce0e6141f
commit 17b4725b44
2 changed files with 13 additions and 11 deletions

View File

@@ -21,7 +21,7 @@ describe "PaneContainer", ->
it "preserves the focused pane across serialization", ->
expect(pane3A.focused).toBe true
containerB = containerA.testSerialization()
containerB = PaneContainer.deserialize(containerA.serialize())
[pane1B, pane2B, pane3B] = containerB.getPanes()
expect(pane3B.focused).toBe true
@@ -29,7 +29,7 @@ describe "PaneContainer", ->
pane3A.activate()
expect(containerA.getActivePane()).toBe pane3A
containerB = containerA.testSerialization()
containerB = PaneContainer.deserialize(containerA.serialize())
[pane1B, pane2B, pane3B] = containerB.getPanes()
expect(containerB.getActivePane()).toBe pane3B

View File

@@ -1,6 +1,5 @@
{find, flatten} = require 'underscore-plus'
{Emitter, CompositeDisposable} = require 'event-kit'
Serializable = require 'serializable'
Gutter = require './gutter'
Model = require './model'
Pane = require './pane'
@@ -9,12 +8,19 @@ ItemRegistry = require './item-registry'
module.exports =
class PaneContainer extends Model
atom.deserializers.add(this)
Serializable.includeInto(this)
@version: 1
root: null
@deserialize: (state) ->
container = Object.create(@prototype) # allows us to pass a self reference to our child before invoking constructor
state.root = atom.deserializers.deserialize(state.root, {container})
state.destroyEmptyPanes = atom.config.get('core.destroyEmptyPanes')
state.activePane = find state.root.getPanes(), (pane) -> pane.id is state.activePaneId
@call(container, state) # run constructor
container
constructor: (params) ->
super
@@ -33,13 +39,9 @@ class PaneContainer extends Model
@monitorActivePaneItem()
@monitorPaneItems()
deserializeParams: (params) ->
params.root = atom.deserializers.deserialize(params.root, container: this)
params.destroyEmptyPanes = atom.config.get('core.destroyEmptyPanes')
params.activePane = find params.root.getPanes(), (pane) -> pane.id is params.activePaneId
params
serializeParams: (params) ->
serialize: (params) ->
deserializer: 'PaneContainer'
version: @constructor.version
root: @root?.serialize()
activePaneId: @activePane.id