Unify root view state with window state

This commit is contained in:
Corey Johnson & Nathan Sobo
2013-03-21 18:23:37 -06:00
parent 84244a4c22
commit f4d339ccac
5 changed files with 27 additions and 28 deletions

View File

@@ -179,17 +179,6 @@ _.extend atom,
toggleFullScreen: ->
@sendMessageToBrowserProcess('toggleFullScreen')
getRootViewStateForPath: (path) ->
if json = localStorage[path]
JSON.parse(json)
setRootViewStateForPath: (path, state) ->
return unless path
if state?
localStorage[path] = JSON.stringify(state)
else
delete localStorage[path]
sendMessageToBrowserProcess: (name, data=[], callbacks) ->
messageId = messageIdCounter++
data.unshift(messageId)
@@ -209,12 +198,17 @@ _.extend atom,
windowState
getWindowState: (keyPath) ->
windowState = JSON.parse($native.getWindowState())
inMemoryState = $native.getWindowState()
inMemoryState = null unless inMemoryState.length > 0
windowState = JSON.parse(inMemoryState ? localStorage[window.location.params.pathToOpen] ? '{}')
if keyPath
_.valueForKeyPath(windowState, keyPath)
else
windowState
saveWindowState: ->
localStorage[@getPathToOpen()] = JSON.stringify(@getWindowState())
update: ->
@sendMessageToBrowserProcess('update')

View File

@@ -56,7 +56,7 @@ window.startup = ->
keymap.loadBundledKeymaps()
atom.loadThemes()
atom.loadPackages()
buildProjectAndRootView()
deserializeWindowState()
atom.activatePackages()
keymap.loadUserKeymaps()
atom.requireUserInitScript()
@@ -66,9 +66,9 @@ window.startup = ->
window.shutdown = ->
return if not project and not rootView
atom.setWindowState('pathToOpen', project.getPath())
atom.setRootViewStateForPath project.getPath(),
project: project.serialize()
rootView: rootView.serialize()
atom.setWindowState('project', project.serialize())
atom.setWindowState('rootView', rootView.serialize())
atom.saveWindowState()
rootView.deactivate()
project.destroy()
git?.destroy()
@@ -91,13 +91,15 @@ window.handleWindowEvents = ->
$(window).on 'blur', -> $("body").addClass('is-blurred')
$(window).command 'window:close', => confirmClose()
window.buildProjectAndRootView = ->
window.deserializeWindowState = ->
RootView = require 'root-view'
Project = require 'project'
Git = require 'git'
pathToOpen = atom.getPathToOpen()
windowState = atom.getRootViewStateForPath(pathToOpen) ? {}
windowState = atom.getWindowState()
window.project = deserialize(windowState.project) ? new Project(pathToOpen)
window.rootView = deserialize(windowState.rootView) ? new RootView