From c6a89a4abe560c22758ea3c755dacc0fc4368039 Mon Sep 17 00:00:00 2001 From: stereobooster Date: Sun, 9 Oct 2016 23:00:51 +0300 Subject: [PATCH 1/3] Fix for #10474 --- src/text-editor.coffee | 4 ++-- src/window-event-handler.coffee | 3 ++- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/src/text-editor.coffee b/src/text-editor.coffee index 02cce3daf..e748cdfe4 100644 --- a/src/text-editor.coffee +++ b/src/text-editor.coffee @@ -878,8 +878,8 @@ class TextEditor extends Model # Determine whether the user should be prompted to save before closing # this editor. - shouldPromptToSave: ({windowCloseRequested}={}) -> - if windowCloseRequested + shouldPromptToSave: ({windowCloseRequested, projectHasPaths}={}) -> + if windowCloseRequested && projectHasPaths false else @isModified() and not @buffer.hasMultipleEditors() diff --git a/src/window-event-handler.coffee b/src/window-event-handler.coffee index 559c8ac29..62ce4527a 100644 --- a/src/window-event-handler.coffee +++ b/src/window-event-handler.coffee @@ -148,7 +148,8 @@ class WindowEventHandler @document.body.classList.remove("fullscreen") handleWindowBeforeunload: (event) => - confirmed = @atomEnvironment.workspace?.confirmClose(windowCloseRequested: true) + projectHasPaths = @atomEnvironment.project.getPaths().length > 0 + confirmed = @atomEnvironment.workspace?.confirmClose(windowCloseRequested: true, projectHasPaths: projectHasPaths) if confirmed and not @reloadRequested and not @atomEnvironment.inSpecMode() and @atomEnvironment.getCurrentWindow().isWebViewFocused() @atomEnvironment.hide() @reloadRequested = false From 63b9c8eb4b7386883977ac1b660c7d3ec32b6dd0 Mon Sep 17 00:00:00 2001 From: stereobooster Date: Mon, 10 Oct 2016 01:20:22 +0300 Subject: [PATCH 2/3] Add test coverage for save before close --- spec/text-editor-spec.coffee | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/spec/text-editor-spec.coffee b/spec/text-editor-spec.coffee index c1c7141c3..4bc0f4778 100644 --- a/spec/text-editor-spec.coffee +++ b/spec/text-editor-spec.coffee @@ -5173,12 +5173,16 @@ describe "TextEditor", -> expect(editor.getSelectedBufferRange()).toEqual [[13, 0], [14, 2]] describe ".shouldPromptToSave()", -> - it "returns false when an edit session's buffer is in use by more than one session", -> + it "returns true when buffer changed", -> jasmine.unspy(editor, 'shouldPromptToSave') expect(editor.shouldPromptToSave()).toBeFalsy() buffer.setText('changed') expect(editor.shouldPromptToSave()).toBeTruthy() + it "returns false when an edit session's buffer is in use by more than one session", -> + jasmine.unspy(editor, 'shouldPromptToSave') + buffer.setText('changed') + editor2 = null waitsForPromise -> atom.workspace.getActivePane().splitRight() @@ -5189,6 +5193,16 @@ describe "TextEditor", -> editor2.destroy() expect(editor.shouldPromptToSave()).toBeTruthy() + it "returns false when close of a window requested and edit session opened inside project", -> + jasmine.unspy(editor, 'shouldPromptToSave') + buffer.setText('changed') + expect(editor.shouldPromptToSave(windowCloseRequested: true, projectHasPaths: true)).toBeFalsy() + + it "returns true when close of a window requested and edit session opened without project", -> + jasmine.unspy(editor, 'shouldPromptToSave') + buffer.setText('changed') + expect(editor.shouldPromptToSave(windowCloseRequested: true, projectHasPaths: false)).toBeTruthy() + describe "when the editor contains surrogate pair characters", -> it "correctly backspaces over them", -> editor.setText('\uD835\uDF97\uD835\uDF97\uD835\uDF97') From 940f92bfd3bb2f114129ed00e1c7707556c9a064 Mon Sep 17 00:00:00 2001 From: stereobooster Date: Mon, 10 Oct 2016 10:47:50 +0300 Subject: [PATCH 3/3] Apply CR --- src/text-editor.coffee | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/text-editor.coffee b/src/text-editor.coffee index e748cdfe4..5fe2d949f 100644 --- a/src/text-editor.coffee +++ b/src/text-editor.coffee @@ -879,7 +879,7 @@ class TextEditor extends Model # Determine whether the user should be prompted to save before closing # this editor. shouldPromptToSave: ({windowCloseRequested, projectHasPaths}={}) -> - if windowCloseRequested && projectHasPaths + if windowCloseRequested and projectHasPaths false else @isModified() and not @buffer.hasMultipleEditors()