From 8fcdb7bcc6dedb7af9b1a7829a83cdc2fca54f4b Mon Sep 17 00:00:00 2001 From: Max Date: Tue, 16 May 2017 00:29:21 +0200 Subject: Fix an erroneous check that would allow to close windows with only one tab even when it was busy (#2787) --- Source/SPWindowController.m | 7 +++---- Source/SPWindowControllerDelegate.m | 16 +++++++--------- 2 files changed, 10 insertions(+), 13 deletions(-) (limited to 'Source') diff --git a/Source/SPWindowController.m b/Source/SPWindowController.m index 7f3c687b..9755cd0d 100644 --- a/Source/SPWindowController.m +++ b/Source/SPWindowController.m @@ -160,15 +160,14 @@ */ - (IBAction)closeTab:(id)sender { - // Return if the selected tab shouldn't be closed - if (![selectedTableDocument parentTabShouldClose]) return; - // If there are multiple tabs, close the front tab. if ([tabView numberOfTabViewItems] > 1) { + // Return if the selected tab shouldn't be closed + if (![selectedTableDocument parentTabShouldClose]) return; [tabView removeTabViewItem:[tabView selectedTabViewItem]]; - } else { + //trying to close the window will itself call parentTabShouldClose for all tabs in windowShouldClose: [[self window] performClose:self]; } } diff --git a/Source/SPWindowControllerDelegate.m b/Source/SPWindowControllerDelegate.m index 79b1e2f1..009dc0a4 100644 --- a/Source/SPWindowControllerDelegate.m +++ b/Source/SPWindowControllerDelegate.m @@ -56,15 +56,11 @@ */ - (BOOL)windowShouldClose:(id)sender { - // Iterate through all tabs if more than one tab is opened only otherwise - // [... parentTabShouldClose] will be called twice [see self closeTab:(id)sender] - if ([[tabView tabViewItems] count] > 1) { - for (NSTabViewItem *eachItem in [tabView tabViewItems]) - { - SPDatabaseDocument *eachDocument = [eachItem identifier]; - - if (![eachDocument parentTabShouldClose]) return NO; - } + for (NSTabViewItem *eachItem in [tabView tabViewItems]) + { + SPDatabaseDocument *eachDocument = [eachItem identifier]; + + if (![eachDocument parentTabShouldClose]) return NO; } // Remove global session data if the last window of a session will be closed @@ -190,6 +186,8 @@ /** * Called to determine whether a tab view item can be closed + * + * Note: This is ONLY called when using the "X" button on the tab itself. */ - (BOOL)tabView:(NSTabView *)aTabView shouldCloseTabViewItem:(NSTabViewItem *)tabViewItem { -- cgit v1.2.3