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

Reply via email to