diff options
author | June McEnroe <programble@gmail.com> | 2018-02-04 00:11:18 -0500 |
---|---|---|
committer | June McEnroe <programble@gmail.com> | 2018-02-04 00:11:18 -0500 |
commit | 609f8d0b1acb75a29e2c4192811c41037d13cf43 (patch) | |
tree | 18a7fb35e3b75ddf26343096d981a4ad592be7f4 | |
parent | Apparently this is how people write Objective-C (diff) | |
download | src-609f8d0b1acb75a29e2c4192811c41037d13cf43.tar.gz src-609f8d0b1acb75a29e2c4192811c41037d13cf43.zip |
Quit gfcocoa when window closes
Diffstat (limited to '')
-rw-r--r-- | bin/gfcocoa.m | 35 |
1 files changed, 24 insertions, 11 deletions
diff --git a/bin/gfcocoa.m b/bin/gfcocoa.m index 04410820..a9e4a1b5 100644 --- a/bin/gfcocoa.m +++ b/bin/gfcocoa.m @@ -28,19 +28,19 @@ extern void input(char in); static size_t size = 4 * WIDTH * HEIGHT; static uint32_t buf[WIDTH * HEIGHT]; -@interface BufferView : NSView { -} +@interface BufferView : NSView @end @implementation BufferView - (void)drawRect:(NSRect)dirtyRect { CGContextRef ctx = [[NSGraphicsContext currentContext] CGContext]; CGColorSpaceRef rgb = CGColorSpaceCreateDeviceRGB(); - CGDataProviderRef data = CGDataProviderCreateWithData(NULL, buf, size, NULL); + CGDataProviderRef data = + CGDataProviderCreateWithData(NULL, buf, size, NULL); CGImageRef image = CGImageCreate(WIDTH, HEIGHT, 8, 32, WIDTH * 4, rgb, - kCGBitmapByteOrder32Little | kCGImageAlphaNoneSkipFirst, - data, NULL, false, kCGRenderingIntentDefault); + kCGBitmapByteOrder32Little | kCGImageAlphaNoneSkipFirst, + data, NULL, false, kCGRenderingIntentDefault); CGContextDrawImage(ctx, CGRectMake(0, 0, WIDTH, HEIGHT), image); CGImageRelease(image); CGDataProviderRelease(data); @@ -66,26 +66,39 @@ static uint32_t buf[WIDTH * HEIGHT]; } @end +@interface Delegate : NSObject <NSApplicationDelegate> +@end + +@implementation Delegate +- (BOOL)applicationShouldTerminateAfterLastWindowClosed: + (NSApplication *)sender { + return YES; +} +@end + int main(int argc, char *argv[]) { int error = init(argc, argv); - if (error) return error; + if (error) + return error; draw(buf, WIDTH, HEIGHT); [NSApplication sharedApplication]; [NSApp setActivationPolicy:NSApplicationActivationPolicyRegular]; + [NSApp setDelegate:[Delegate new]]; NSWindow *window = [[NSWindow alloc] - initWithContentRect:NSMakeRect(0, 0, 640, 480) - styleMask:NSTitledWindowMask | NSClosableWindowMask + initWithContentRect:NSMakeRect(0, 0, WIDTH, HEIGHT) + styleMask:NSTitledWindowMask | NSClosableWindowMask | + NSMiniaturizableWindowMask | NSResizableWindowMask backing:NSBackingStoreBuffered - defer:NO]; - [window setTitle:[[NSString alloc] initWithUTF8String:argv[0]]]; - [window center]; + defer:YES]; BufferView *view = [[BufferView alloc] initWithFrame:[window frame]]; [window setContentView:view]; + [window setTitle:[NSString stringWithUTF8String:argv[0]]]; + [window center]; [window makeKeyAndOrderFront:nil]; [NSApp activateIgnoringOtherApps:YES]; [NSApp run]; |