diff options
author | Teddy Wing | 2023-08-14 02:02:49 +0200 |
---|---|---|
committer | Teddy Wing | 2023-08-14 02:02:49 +0200 |
commit | 5d242798e7a343b2012dca16e8d22af957205f93 (patch) | |
tree | 6475e355a6def39d3a5172d7e1d39abcb6b78503 /src | |
parent | 70b8d569190c7a54f0dc0e2cd11ead6577caa840 (diff) | |
download | Base-Windowed-Application-5d242798e7a343b2012dca16e8d22af957205f93.tar.bz2 |
Add an NSApplicationDelegate
Move the window creation to a separate class, and also allow us to take
advantage of `NSApplicationDelegate` protocol methods.
Diffstat (limited to 'src')
-rw-r--r-- | src/AppDelegate.h | 6 | ||||
-rw-r--r-- | src/AppDelegate.m | 28 | ||||
-rw-r--r-- | src/main.m | 14 |
3 files changed, 38 insertions, 10 deletions
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 <Cocoa/Cocoa.h> + +@interface AppDelegate : NSObject <NSApplicationDelegate> { + 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 @@ -2,6 +2,8 @@ #import <Cocoa/Cocoa.h> +#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<NSApplicationDelegate> *app_delegate = [[AppDelegate alloc] init]; + [application setDelegate:app_delegate]; [application run]; - [window release]; [quit_menu_item release]; [application_menu release]; [application_menu_item release]; |