diff --git a/src/application-delegate.coffee b/src/application-delegate.coffee index 70b0f91bc..d8dee2a80 100644 --- a/src/application-delegate.coffee +++ b/src/application-delegate.coffee @@ -153,10 +153,15 @@ class ApplicationDelegate showMessageDialog: (params) -> - showSaveDialog: (params) -> - if typeof params is 'string' - params = {defaultPath: params} - @getCurrentWindow().showSaveDialog(params) + showSaveDialog: (options, callback) -> + if callback? + # Async + @getCurrentWindow().showSaveDialog(options, callback) + else + # Sync + if typeof options is 'string' + options = {defaultPath: options} + @getCurrentWindow().showSaveDialog(options) playBeepSound: -> shell.beep() diff --git a/src/atom-environment.js b/src/atom-environment.js index 663bb6c00..7e822e32f 100644 --- a/src/atom-environment.js +++ b/src/atom-environment.js @@ -1076,14 +1076,6 @@ class AtomEnvironment { return this.deserialize(state) } - showSaveDialog (callback) { - callback(this.showSaveDialogSync()) - } - - showSaveDialogSync (options = {}) { - this.applicationDelegate.showSaveDialog(options) - } - async saveState (options, storageKey) { if (this.enablePersistence && this.project) { const state = this.serialize(options) diff --git a/src/main-process/atom-window.coffee b/src/main-process/atom-window.coffee index ca3995c05..3a8c7cdc6 100644 --- a/src/main-process/atom-window.coffee +++ b/src/main-process/atom-window.coffee @@ -294,12 +294,18 @@ class AtomWindow @browserWindow.reload() if result @loadedPromise - showSaveDialog: (params) -> - params = Object.assign({ + showSaveDialog: (options, callback) -> + options = Object.assign({ title: 'Save File', defaultPath: @representedDirectoryPaths[0] - }, params) - dialog.showSaveDialog(@browserWindow, params) + }, options) + + if callback? + # Async + dialog.showSaveDialog(@browserWindow, options, callback) + else + # Sync + dialog.showSaveDialog(@browserWindow, options) toggleDevTools: -> @browserWindow.toggleDevTools()