From d07bf338c8e1cd155f354534edde087b078be487 Mon Sep 17 00:00:00 2001 From: probablycorey Date: Tue, 29 Oct 2013 15:55:01 -0700 Subject: [PATCH] Consolidate pane item destruction --- spec/pane-container-spec.coffee | 8 ++++---- src/pane-container.coffee | 4 ++-- src/pane.coffee | 11 ++++++----- 3 files changed, 12 insertions(+), 11 deletions(-) diff --git a/spec/pane-container-spec.coffee b/spec/pane-container-spec.coffee index a2210ad41..24dff904d 100644 --- a/spec/pane-container-spec.coffee +++ b/spec/pane-container-spec.coffee @@ -167,8 +167,8 @@ describe "PaneContainer", -> describe ".confirmClose()", -> it "returns true after modified files are saved", -> - pane1.itemAtIndex(0).isModified = -> true - pane2.itemAtIndex(0).isModified = -> true + pane1.itemAtIndex(0).shouldPromptToSave = -> true + pane2.itemAtIndex(0).shouldPromptToSave = -> true spyOn(atom, "confirmSync").andReturn(0) saved = container.confirmClose() @@ -178,8 +178,8 @@ describe "PaneContainer", -> expect(atom.confirmSync).toHaveBeenCalled() it "returns false if the user cancels saving", -> - pane1.itemAtIndex(0).isModified = -> true - pane2.itemAtIndex(0).isModified = -> true + pane1.itemAtIndex(0).shouldPromptToSave = -> true + pane2.itemAtIndex(0).shouldPromptToSave = -> true spyOn(atom, "confirmSync").andReturn(1) saved = container.confirmClose() diff --git a/src/pane-container.coffee b/src/pane-container.coffee index 62ea8eede..912d2429c 100644 --- a/src/pane-container.coffee +++ b/src/pane-container.coffee @@ -128,8 +128,8 @@ class PaneContainer extends View confirmClose: -> saved = true for pane in @getPanes() - for item in pane.getItems() when item.isModified?() - if not @paneAtIndex(0).promptToSaveItem item + for item in pane.getItems() + if not pane.destroyItem(item) saved = false break saved diff --git a/src/pane.coffee b/src/pane.coffee index e49804332..5d489f5f3 100644 --- a/src/pane.coffee +++ b/src/pane.coffee @@ -196,15 +196,14 @@ class Pane extends View destroyItem: (item) -> @trigger 'pane:before-item-destroyed', [item] container = @getContainer() - reallyDestroyItem = => + + if @promptToSaveItem(item) @removeItem(item) container.itemDestroyed(item) item.destroy?() - - if item.shouldPromptToSave?() - reallyDestroyItem() if @promptToSaveItem(item) + true else - reallyDestroyItem() + false # Public: Remove and delete all items. destroyItems: -> @@ -216,6 +215,8 @@ class Pane extends View # Public: Prompt the user to save the given item. promptToSaveItem: (item) -> + return true unless item.shouldPromptToSave?() + uri = item.getUri() chosen = atom.confirmSync( "'#{item.getTitle?() ? item.getUri()}' has changes, do you want to save them?"