Fix incorrect state save when exiting

This commit is contained in:
Max Brunsfeld 2015-06-15 14:14:08 -07:00
parent 749e894070
commit 41773b0861

View File

@ -105,7 +105,7 @@ class AtomApplication
app.quit()
return
@windows.splice(@windows.indexOf(window), 1)
@saveState() unless window.isSpec
@saveState(true) unless window.isSpec
# Public: Adds the {AtomWindow} to the global window list.
addWindow: (window) ->
@ -116,14 +116,14 @@ class AtomApplication
unless window.isSpec
focusHandler = => @lastFocusedWindow = window
blurHandler = => @saveState()
blurHandler = => @saveState(false)
window.browserWindow.on 'focus', focusHandler
window.browserWindow.on 'blur', blurHandler
window.browserWindow.once 'closed', =>
@lastFocusedWindow = null if window is @lastFocusedWindow
window.browserWindow.removeListener 'focus', focusHandler
window.browserWindow.removeListener 'blur', blurHandler
window.browserWindow.webContents.once 'did-finish-load', => @saveState()
window.browserWindow.webContents.once 'did-finish-load', => @saveState(false)
# Creates server to listen for additional atom application launches.
#
@ -213,7 +213,7 @@ class AtomApplication
@openPathOnEvent('application:open-license', path.join(process.resourcesPath, 'LICENSE.md'))
app.on 'before-quit', =>
@saveState() if @hasEditorWindows()
@saveState(false)
@quitting = true
app.on 'will-quit', =>
@ -221,7 +221,7 @@ class AtomApplication
@deleteSocketFile()
app.on 'will-exit', =>
@saveState() if @hasEditorWindows()
@saveState(false)
@killAllProcesses()
@deleteSocketFile()
@ -439,14 +439,15 @@ class AtomApplication
console.log("Killing process #{pid} failed: #{error.code ? error.message}")
delete @pidsToOpenWindows[pid]
saveState: ->
saveState: (allowEmpty=false) ->
return if @quitting
states = []
for window in @windows
unless window.isSpec
if loadSettings = window.getLoadSettings()
states.push(initialPaths: loadSettings.initialPaths)
@storageFolder.store('application.json', states)
if states.length > 0 or allowEmpty
@storageFolder.store('application.json', states)
hasEditorWindows: ->
@windows.some (window) -> not window.isSpec