Always set pathToOpen in RootView.initialize

Without this an untitled buffer will be opened when
Atom is reopened after being closed with no editors
open.
This commit is contained in:
Kevin Sawicki 2013-01-10 16:24:36 -08:00
parent 8bf16ba602
commit d27080cee6
2 changed files with 55 additions and 39 deletions

View File

@ -69,52 +69,67 @@ describe "RootView", ->
path = require.resolve 'fixtures' path = require.resolve 'fixtures'
rootView.remove() rootView.remove()
rootView = new RootView(path) rootView = new RootView(path)
rootView.open('dir/a')
editor1 = rootView.getActiveEditor() describe "when there are open editors", ->
editor2 = editor1.splitRight() beforeEach ->
editor3 = editor2.splitRight() rootView.open('dir/a')
editor4 = editor2.splitDown() editor1 = rootView.getActiveEditor()
editor2.edit(rootView.project.buildEditSessionForPath('dir/b')) editor2 = editor1.splitRight()
editor3.edit(rootView.project.buildEditSessionForPath('sample.js')) editor3 = editor2.splitRight()
editor3.setCursorScreenPosition([2, 4]) editor4 = editor2.splitDown()
editor4.edit(rootView.project.buildEditSessionForPath('sample.txt')) editor2.edit(rootView.project.buildEditSessionForPath('dir/b'))
editor4.setCursorScreenPosition([0, 2]) editor3.edit(rootView.project.buildEditSessionForPath('sample.js'))
rootView.attachToDom() editor3.setCursorScreenPosition([2, 4])
editor2.focus() editor4.edit(rootView.project.buildEditSessionForPath('sample.txt'))
viewState = rootView.serialize() editor4.setCursorScreenPosition([0, 2])
rootView.remove() rootView.attachToDom()
editor2.focus()
viewState = rootView.serialize()
rootView.remove()
it "constructs the view with the same project and panes", -> it "constructs the view with the same project and panes", ->
rootView = RootView.deserialize(viewState) rootView = RootView.deserialize(viewState)
rootView.attachToDom() rootView.attachToDom()
expect(rootView.getEditors().length).toBe 4 expect(rootView.getEditors().length).toBe 4
editor1 = rootView.panes.find('.row > .pane .editor:eq(0)').view() editor1 = rootView.panes.find('.row > .pane .editor:eq(0)').view()
editor3 = rootView.panes.find('.row > .pane .editor:eq(1)').view() editor3 = rootView.panes.find('.row > .pane .editor:eq(1)').view()
editor2 = rootView.panes.find('.row > .column > .pane .editor:eq(0)').view() editor2 = rootView.panes.find('.row > .column > .pane .editor:eq(0)').view()
editor4 = rootView.panes.find('.row > .column > .pane .editor:eq(1)').view() editor4 = rootView.panes.find('.row > .column > .pane .editor:eq(1)').view()
expect(editor1.getPath()).toBe require.resolve('fixtures/dir/a') expect(editor1.getPath()).toBe require.resolve('fixtures/dir/a')
expect(editor2.getPath()).toBe require.resolve('fixtures/dir/b') expect(editor2.getPath()).toBe require.resolve('fixtures/dir/b')
expect(editor3.getPath()).toBe require.resolve('fixtures/sample.js') expect(editor3.getPath()).toBe require.resolve('fixtures/sample.js')
expect(editor3.getCursorScreenPosition()).toEqual [2, 4] expect(editor3.getCursorScreenPosition()).toEqual [2, 4]
expect(editor4.getPath()).toBe require.resolve('fixtures/sample.txt') expect(editor4.getPath()).toBe require.resolve('fixtures/sample.txt')
expect(editor4.getCursorScreenPosition()).toEqual [0, 2] expect(editor4.getCursorScreenPosition()).toEqual [0, 2]
# ensure adjust pane dimensions is called # ensure adjust pane dimensions is called
expect(editor1.width()).toBeGreaterThan 0 expect(editor1.width()).toBeGreaterThan 0
expect(editor2.width()).toBeGreaterThan 0 expect(editor2.width()).toBeGreaterThan 0
expect(editor3.width()).toBeGreaterThan 0 expect(editor3.width()).toBeGreaterThan 0
expect(editor4.width()).toBeGreaterThan 0 expect(editor4.width()).toBeGreaterThan 0
# ensure correct editor is focused again # ensure correct editor is focused again
expect(editor2.isFocused).toBeTruthy() expect(editor2.isFocused).toBeTruthy()
expect(editor1.isFocused).toBeFalsy() expect(editor1.isFocused).toBeFalsy()
expect(editor3.isFocused).toBeFalsy() expect(editor3.isFocused).toBeFalsy()
expect(editor4.isFocused).toBeFalsy() expect(editor4.isFocused).toBeFalsy()
expect(rootView.getTitle()).toBe "#{fs.base(editor2.getPath())} #{rootView.project.getPath()}"
describe "where there are no open editors", ->
beforeEach ->
rootView.attachToDom()
viewState = rootView.serialize()
rootView.remove()
it "constructs the view with no open editors", ->
rootView = RootView.deserialize(viewState)
rootView.attachToDom()
expect(rootView.getEditors().length).toBe 0
expect(rootView.getTitle()).toBe "#{fs.base(editor2.getPath())} #{rootView.project.getPath()}"
describe "when called with no pathToOpen", -> describe "when called with no pathToOpen", ->
it "opens an empty buffer", -> it "opens an empty buffer", ->

View File

@ -49,6 +49,7 @@ class RootView extends View
@project = new Project(projectOrPathToOpen) @project = new Project(projectOrPathToOpen)
else else
@project = projectOrPathToOpen @project = projectOrPathToOpen
pathToOpen = @project?.getPath()
@pathToOpenIsFile = pathToOpen and fs.isFile(pathToOpen) @pathToOpenIsFile = pathToOpen and fs.isFile(pathToOpen)
config.load() config.load()