From 45ce8e1d63695aa0bbfd5911cf01fa83ca192e91 Mon Sep 17 00:00:00 2001 From: Cheng Zhao Date: Thu, 27 Jun 2013 18:39:29 +0800 Subject: [PATCH] Ask for close confirmation in beforeunload handler. --- src/app/pane-container.coffee | 4 +++- src/app/window-event-handler.coffee | 7 ++----- src/app/window.coffee | 4 ---- src/atom-application.coffee | 5 ----- src/atom-window.coffee | 5 ----- 5 files changed, 5 insertions(+), 20 deletions(-) diff --git a/src/app/pane-container.coffee b/src/app/pane-container.coffee index f13f06c32..40653bf92 100644 --- a/src/app/pane-container.coffee +++ b/src/app/pane-container.coffee @@ -83,7 +83,9 @@ class PaneContainer extends View saved = true for pane in @getPanes() for item in pane.getItems() when item.isModified?() - saved = false if not pane.promptToSaveItem item + if not @paneAtIndex(0).promptToSaveItem item + saved = false + break saved getPanes: -> diff --git a/src/app/window-event-handler.coffee b/src/app/window-event-handler.coffee index 5f299339d..9f9c5195a 100644 --- a/src/app/window-event-handler.coffee +++ b/src/app/window-event-handler.coffee @@ -14,13 +14,10 @@ class WindowEventHandler @subscribe $(window), 'blur', -> $("body").addClass('is-blurred') @subscribe $(window), 'window:open-path', (event, pathToOpen) -> rootView?.open(pathToOpen) unless fsUtils.isDirectorySync(pathToOpen) + @subscribe $(window), 'beforeunload', -> rootView?.confirmClose() @subscribeToCommand $(window), 'window:toggle-full-screen', => atom.toggleFullScreen() - @subscribeToCommand $(window), 'window:close', => - if rootView? - closeWithoutConfirm() if rootView.confirmClose() - else - closeWithoutConfirm() + @subscribeToCommand $(window), 'window:close', => window.close() @subscribeToCommand $(window), 'window:reload', => atom.reload() @subscribeToCommand $(document), 'core:focus-next', @focusNext diff --git a/src/app/window.coffee b/src/app/window.coffee index d5f5a0493..dfb4ee8f3 100644 --- a/src/app/window.coffee +++ b/src/app/window.coffee @@ -210,10 +210,6 @@ window.restoreDimensions = -> window.setDimensions(dimensions) $(window).on 'unload', -> atom.setWindowState('dimensions', window.getDimensions()) -window.closeWithoutConfirm = -> - atom.hide() - ipc.sendChannel 'close-without-confirm' - window.onerror = -> atom.openDevTools() diff --git a/src/atom-application.coffee b/src/atom-application.coffee index 6e06e5a82..2d8a34cb0 100644 --- a/src/atom-application.coffee +++ b/src/atom-application.coffee @@ -175,11 +175,6 @@ class AtomApplication @installUpdate = quitAndUpdate @buildApplicationMenu version, quitAndUpdate - ipc.on 'close-without-confirm', (processId, routingId) -> - window = BrowserWindow.fromProcessIdAndRoutingId processId, routingId - window.removeAllListeners 'close' - window.close() - ipc.on 'open-config', => @openConfig() diff --git a/src/atom-window.coffee b/src/atom-window.coffee index fb4ee615c..36eb37de2 100644 --- a/src/atom-window.coffee +++ b/src/atom-window.coffee @@ -89,11 +89,6 @@ class AtomWindow # Spec window's web view should always have focus @browserWindow.on 'blur', => @browserWindow.focusOnWebView() - else - @browserWindow.on 'close', (event) => - unless @browserWindow.isCrashed() - event.preventDefault() - @sendCommand 'window:close' openPath: (pathToOpen) -> if @loaded