Merge pull request #14420 from atom/fb-mdt-dock-items-dont-cause-restore-state-prompt

Don't show restore dialog for non-editor dock items
This commit is contained in:
Ian Olsen 2017-05-24 08:43:35 -07:00 committed by GitHub
commit d5089936bd
2 changed files with 31 additions and 5 deletions

View File

@ -423,6 +423,17 @@ describe "AtomEnvironment", ->
expect(atom.workspace.open.callCount).toBe(1)
expect(atom.workspace.open).toHaveBeenCalledWith(__filename)
describe "when a dock has a non-text editor", ->
it "doesn't prompt the user to restore state", ->
dock = atom.workspace.getLeftDock()
dock.getActivePane().addItem
getTitle: -> 'title'
element: document.createElement 'div'
state = Symbol()
spyOn(atom, 'confirm')
atom.attemptRestoreProjectStateForPaths(state, [__dirname], [__filename])
expect(atom.confirm).not.toHaveBeenCalled()
describe "when the window is dirty", ->
editor = null
@ -431,6 +442,17 @@ describe "AtomEnvironment", ->
editor = e
editor.setText('new editor')
describe "when a dock has a modified editor", ->
it "prompts the user to restore the state", ->
dock = atom.workspace.getLeftDock()
dock.getActivePane().addItem editor
spyOn(atom, "confirm").andReturn(1)
spyOn(atom.project, 'addPath')
spyOn(atom.workspace, 'open')
state = Symbol()
atom.attemptRestoreProjectStateForPaths(state, [__dirname], [__filename])
expect(atom.confirm).toHaveBeenCalled()
it "prompts the user to restore the state in a new window, discarding it and adding folder to current window", ->
spyOn(atom, "confirm").andReturn(1)
spyOn(atom.project, 'addPath')

View File

@ -912,13 +912,17 @@ class AtomEnvironment extends Model
@project.addPath(folder) for folder in projectPaths
attemptRestoreProjectStateForPaths: (state, projectPaths, filesToOpen = []) ->
paneItemIsEmptyUnnamedTextEditor = (item) ->
return false unless item instanceof TextEditor
center = @workspace.getCenter()
windowIsUnused = =>
for container in @workspace.getPaneContainers()
for item in container.getPaneItems()
if item instanceof TextEditor
return false if item.getPath() or item.isModified()
else
return false if container is center
true
windowIsUnused = @workspace.getPaneItems().every(paneItemIsEmptyUnnamedTextEditor)
if windowIsUnused
if windowIsUnused()
@restoreStateIntoThisEnvironment(state)
Promise.all (@workspace.open(file) for file in filesToOpen)
else