From 5d242798e7a343b2012dca16e8d22af957205f93 Mon Sep 17 00:00:00 2001 From: Teddy Wing Date: Mon, 14 Aug 2023 02:02:49 +0200 Subject: Add an NSApplicationDelegate Move the window creation to a separate class, and also allow us to take advantage of `NSApplicationDelegate` protocol methods. --- src/AppDelegate.h | 6 ++++++ src/AppDelegate.m | 28 ++++++++++++++++++++++++++++ src/main.m | 14 ++++---------- 3 files changed, 38 insertions(+), 10 deletions(-) create mode 100644 src/AppDelegate.h create mode 100644 src/AppDelegate.m (limited to 'src') diff --git a/src/AppDelegate.h b/src/AppDelegate.h new file mode 100644 index 0000000..eb98fd9 --- /dev/null +++ b/src/AppDelegate.h @@ -0,0 +1,6 @@ +#import + +@interface AppDelegate : NSObject { + NSWindow *_window; +} +@end diff --git a/src/AppDelegate.m b/src/AppDelegate.m new file mode 100644 index 0000000..270be25 --- /dev/null +++ b/src/AppDelegate.m @@ -0,0 +1,28 @@ +#import "AppDelegate.h" + +@implementation AppDelegate + +- (void)dealloc +{ + [_window release]; + [super dealloc]; +} + +- (void)applicationWillFinishLaunching:(NSNotification *)notification +{ + _window = [[NSWindow alloc] + initWithContentRect:NSMakeRect(0, 0, 400, 400) + styleMask:NSWindowStyleMaskTitled + backing:NSBackingStoreBuffered + defer:NO]; + + [_window setTitle:@"Application"]; +} + +- (void)applicationDidFinishLaunching:(NSNotification *)notification +{ + [_window cascadeTopLeftFromPoint:NSMakePoint(100, 100)]; + [_window makeKeyAndOrderFront:nil]; +} + +@end diff --git a/src/main.m b/src/main.m index bc5e385..c7dac1b 100644 --- a/src/main.m +++ b/src/main.m @@ -2,6 +2,8 @@ #import +#import "AppDelegate.h" + int main() { NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init]; @@ -22,19 +24,11 @@ int main() { [application setMainMenu:menubar]; - NSWindow *window = [[NSWindow alloc] - initWithContentRect:NSMakeRect(0, 0, 400, 400) - styleMask:NSWindowStyleMaskTitled - backing:NSBackingStoreBuffered - defer:NO]; - - [window setTitle:@"Application"]; - [window cascadeTopLeftFromPoint:NSMakePoint(100, 100)]; - [window makeKeyAndOrderFront:nil]; + NSObject *app_delegate = [[AppDelegate alloc] init]; + [application setDelegate:app_delegate]; [application run]; - [window release]; [quit_menu_item release]; [application_menu release]; [application_menu_item release]; -- cgit v1.2.3