diff options
author | June McEnroe <june@causal.agency> | 2018-02-04 00:11:18 -0500 |
---|---|---|
committer | June McEnroe <june@causal.agency> | 2018-02-04 00:11:18 -0500 |
commit | 3cb4221f40d7ff8896aa1958f33ce5b9a623d69b (patch) | |
tree | b24e9fa7570603d40e7c31797624379272121c95 | |
parent | Apparently this is how people write Objective-C (diff) | |
download | src-3cb4221f40d7ff8896aa1958f33ce5b9a623d69b.tar.gz src-3cb4221f40d7ff8896aa1958f33ce5b9a623d69b.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 af4d576a..cfd3d2ad 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]; |