From 951f76f2bf77d837284f7eeac324d7f522cebf0c Mon Sep 17 00:00:00 2001 From: Corey Johnson & Nathan Sobo Date: Fri, 15 Jun 2012 15:32:27 -0600 Subject: [PATCH] Serialize root view state to a string of JSON when storing it on the window upon refresh This avoid situations where arrays in the window state pointed to a different constructor than the current context's Array constructor. --- spec/app/window-spec.coffee | 2 +- src/app/root-view.coffee | 2 +- src/app/window.coffee | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/spec/app/window-spec.coffee b/spec/app/window-spec.coffee index 3ae18b0c2..63fe2b58b 100644 --- a/spec/app/window-spec.coffee +++ b/spec/app/window-spec.coffee @@ -53,7 +53,7 @@ describe "Window", -> expect(atom.rootViewStates[$windowNumber]).toBeUndefined() expectedState = window.rootView.serialize() $(window).trigger 'beforeunload' - expect(atom.rootViewStates[$windowNumber]).toEqual expectedState + expect(atom.rootViewStates[$windowNumber]).toEqual JSON.stringify(expectedState) it "unsubscribes from all buffers", -> editor1 = rootView.activeEditor() diff --git a/src/app/root-view.coffee b/src/app/root-view.coffee index 99d7cd1ab..9bc9c7eff 100644 --- a/src/app/root-view.coffee +++ b/src/app/root-view.coffee @@ -85,7 +85,7 @@ class RootView extends View extension.activate(this, @extensionStates[extension.name]) deactivate: -> - atom.rootViewStates[$windowNumber] = @serialize() + atom.rootViewStates[$windowNumber] = JSON.stringify(@serialize()) extension.deactivate?() for name, extension of @extensions @remove() diff --git a/src/app/window.coffee b/src/app/window.coffee index 545bd25b9..05b7854d6 100644 --- a/src/app/window.coffee +++ b/src/app/window.coffee @@ -41,7 +41,7 @@ windowAdditions = attachRootView: (pathToOpen) -> rootViewState = atom.rootViewStates[$windowNumber] if rootViewState - @rootView = RootView.deserialize(rootViewState) + @rootView = RootView.deserialize(JSON.parse(rootViewState)) else @rootView = new RootView(pathToOpen) @rootView.open() unless pathToOpen