Revision: 15542 http://sourceforge.net/p/skim-app/code/15542 Author: hofman Date: 2025-06-24 16:10:55 +0000 (Tue, 24 Jun 2025) Log Message: ----------- override replyToApplicationhouldTerminate: to notify when termination is canceled, also from NSDocumentController
Modified Paths: -------------- trunk/SKApplication.h trunk/SKApplication.m trunk/SKApplicationController.m Modified: trunk/SKApplication.h =================================================================== --- trunk/SKApplication.h 2025-06-24 14:44:50 UTC (rev 15541) +++ trunk/SKApplication.h 2025-06-24 16:10:55 UTC (rev 15542) @@ -45,7 +45,7 @@ @protocol SKApplicationDelegate <NSApplicationDelegate> @optional - (void)applicationStartsTerminating:(NSNotification *)aNotification; -- (void)applicationDocumentControllerCanceledTerminate:(NSApplication *)application; +- (void)applicationWillNotTerminate:(NSApplication *)application; @end @class SPUStandardUpdaterController; Modified: trunk/SKApplication.m =================================================================== --- trunk/SKApplication.m 2025-06-24 14:44:50 UTC (rev 15541) +++ trunk/SKApplication.m 2025-06-24 16:10:55 UTC (rev 15542) @@ -46,10 +46,6 @@ NSString *SKApplicationStartsTerminatingNotification = @"SKApplicationStartsTerminatingNotification"; -@interface NSApplication (SKPrivateDeclarations) -- (void)_docController:(NSDocumentController *)docController shouldTerminate:(BOOL)shouldTerminate; -@end - @implementation SKApplication @synthesize updaterController, userAttentionDisabled; @@ -85,10 +81,11 @@ [super terminate:sender]; } -- (void)_docController:(NSDocumentController *)docController shouldTerminate:(BOOL)shouldTerminate { - [super _docController:docController shouldTerminate:shouldTerminate]; - if (shouldTerminate == NO && [[self delegate] respondsToSelector:@selector(applicationDocumentControllerCanceledTerminate:)]) - [[self delegate] applicationDocumentControllerCanceledTerminate:self]; +// this is also called after NSDocumentController reviews unsaved documents +- (void)replyToApplicationShouldTerminate:(BOOL)shouldTerminate { + if (shouldTerminate == NO && [[self delegate] respondsToSelector:@selector(applicationWillNotTerminate:)]) + [[self delegate] applicationWillNotTerminate:self]; + [super replyToApplicationShouldTerminate:shouldTerminate]; } - (BOOL)willDragMouse { Modified: trunk/SKApplicationController.m =================================================================== --- trunk/SKApplicationController.m 2025-06-24 14:44:50 UTC (rev 15541) +++ trunk/SKApplicationController.m 2025-06-24 16:10:55 UTC (rev 15542) @@ -299,18 +299,17 @@ } - (void)applicationStartsTerminating:(NSNotification *)aNotification { - if (currentDocumentsTimer == nil) { - [currentDocumentsTimer invalidate]; - currentDocumentsTimer = nil; - NSNotificationCenter *nc = [NSNotificationCenter defaultCenter]; - [nc removeObserver:self name:SKDocumentDidShowNotification object:nil]; - [nc removeObserver:self name:SKDocumentControllerDidRemoveDocumentNotification object:nil]; - [self registerCurrentDocuments:nil]; - } + [currentDocumentsTimer invalidate]; + currentDocumentsTimer = nil; + NSNotificationCenter *nc = [NSNotificationCenter defaultCenter]; + [nc removeObserver:self name:SKDocumentDidShowNotification object:nil]; + [nc removeObserver:self name:SKDocumentControllerDidRemoveDocumentNotification object:nil]; + [self registerCurrentDocuments:nil]; } -- (void)applicationDocumentControllerCanceledTerminate:(NSApplication *)application { - [self registerForCurrentDocumentsNotifications]; +- (void)applicationWillNotTerminate:(NSApplication *)application { + if (currentDocumentsTimer == nil) + [self registerForCurrentDocumentsNotifications]; } - (NSApplicationTerminateReply)applicationShouldTerminate:(NSApplication *)application { @@ -328,7 +327,6 @@ [NSApp replyToApplicationShouldTerminate:YES]; } else { [NSApp replyToApplicationShouldTerminate:NO]; - [self registerForCurrentDocumentsNotifications]; } }); return NSTerminateLater; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. _______________________________________________ Skim-app-commit mailing list Skim-app-commit@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/skim-app-commit