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
[email protected]
https://lists.sourceforge.net/lists/listinfo/skim-app-commit