Merge pull request #13564 from vovkasm/fix-12495

Save initial paths immediately on change
This commit is contained in:
Max Brunsfeld
2017-01-09 11:29:32 -08:00
committed by GitHub
3 changed files with 40 additions and 0 deletions

View File

@@ -41,6 +41,42 @@ describe('AtomApplication', function () {
electron.app.quit = originalAppQuit
})
describe('project paths', function () {
it('sync application state on changes', async function () {
const dirA = makeTempDir()
const dirB = makeTempDir()
const storageFilePath = path.join(process.env.ATOM_HOME, 'storage', 'application.json')
const atomApplication = buildAtomApplication()
const window = atomApplication.launch(parseCommandLine([]))
await focusWindow(window)
const addProjectPathFn = function (dir) {
return 'function (sendBackToMainProcess) { atom.project.addPath(' + JSON.stringify(dir) + '); sendBackToMainProcess(null); }'
}
const removeProjectPathFn = function (dir) {
return 'function (sendBackToMainProcess) { atom.project.removePath(' + JSON.stringify(dir) + '); sendBackToMainProcess(null); }'
}
await evalInWebContents(window.browserWindow.webContents, addProjectPathFn(dirA))
assert( fs.existsSync(storageFilePath), 'ATOM_HOME/storage/application.json not exists' )
const appState1 = JSON.parse(fs.readFileSync(storageFilePath, 'utf8'))
assert.deepEqual(appState1[0].initialPaths, [dirA])
await evalInWebContents(window.browserWindow.webContents, addProjectPathFn(dirB))
const appState2 = JSON.parse(fs.readFileSync(storageFilePath, 'utf8'))
assert.deepEqual(appState2[0].initialPaths, [dirA, dirB])
await evalInWebContents(window.browserWindow.webContents, removeProjectPathFn(dirA))
const appState3 = JSON.parse(fs.readFileSync(storageFilePath, 'utf8'))
assert.deepEqual(appState3[0].initialPaths, [dirB])
})
})
describe('launch', function () {
it('can open to a specific line number of a file', async function () {
const filePath = path.join(makeTempDir(), 'new-file')

View File

@@ -112,6 +112,7 @@ class ApplicationDelegate
loadSettings = getWindowLoadSettings()
loadSettings['initialPaths'] = paths
setWindowLoadSettings(loadSettings)
ipcRenderer.send("did-change-paths")
setAutoHideWindowMenuBar: (autoHide) ->
ipcHelpers.call('window-method', 'setAutoHideMenuBar', autoHide)

View File

@@ -385,6 +385,9 @@ class AtomApplication
@fileRecoveryService.didSavePath(@atomWindowForEvent(event), path)
event.returnValue = true
@disposable.add ipcHelpers.on ipcMain, 'did-change-paths', =>
@saveState(false)
setupDockMenu: ->
if process.platform is 'darwin'
dockMenu = Menu.buildFromTemplate [