# HG changeset patch # User Sam Lantinga # Date 992218090 0 # Node ID ce9cd2cf0d0d96ec5a2900dd198e9d0fd271b739 # Parent 55f1f1b3e27de55f9f644f4df00329c2d0aece35 Date: Sun, 10 Jun 2001 17:33:44 -0500 From: Darrell Walisser Subject: Re: [SDL] Mac OS X Goodies For You Updates and fixes: -fixed erasing window when minmizing it (with some minor window redraw problems) -implemented close box to send SDLQuit event -fixed messed up alpha on 32bpp windows diff -r 55f1f1b3e27d -r ce9cd2cf0d0d src/video/quartz/SDL_QuartzVideo.m --- a/src/video/quartz/SDL_QuartzVideo.m Sun Jun 10 19:31:57 2001 +0000 +++ b/src/video/quartz/SDL_QuartzVideo.m Mon Jun 11 00:08:10 2001 +0000 @@ -355,7 +355,8 @@ /* Manually create a window, avoids having a nib file resource */ window = [ [ SDL_QuartzWindow alloc ] initWithContentRect:rect - styleMask:(NSTitledWindowMask | NSMiniaturizableWindowMask) + styleMask:(NSTitledWindowMask | NSMiniaturizableWindowMask | + NSClosableWindowMask) backing: //NSBackingStoreBuffered NSBackingStoreRetained defer:NO ]; @@ -368,10 +369,14 @@ current->w = width; current->h = height; + [ window setReleasedWhenClosed:YES ]; [ window setTitle:windowTitle ]; [ window setAcceptsMouseMovedEvents:YES ]; + [ window setViewsNeedDisplay:NO ]; [ window center ]; - + [ window setDelegate: + [ [ [ SDL_QuartzWindowDelegate alloc ] init ] autorelease ] ]; + /* For OpenGL, we set the content view to a NSOpenGLView */ if ( flags & SDL_OPENGL ) { @@ -447,7 +452,7 @@ SDL_SetError ("24bpp is not available"); return NULL; case 32: /* (8)-8-8-8 ARGB */ - amask = 0xFF000000; + amask = 0x00000000; /* per-pixel alpha needs to be fixed */ rmask = 0x00FF0000; gmask = 0x0000FF00; bmask = 0x000000FF; diff -r 55f1f1b3e27d -r ce9cd2cf0d0d src/video/quartz/SDL_QuartzWindow.m --- a/src/video/quartz/SDL_QuartzWindow.m Sun Jun 10 19:31:57 2001 +0000 +++ b/src/video/quartz/SDL_QuartzWindow.m Mon Jun 11 00:08:10 2001 +0000 @@ -4,6 +4,7 @@ {} - (void)miniaturize:(id)sender; - (void)deminiaturize:(id)sender; +- (void)display; @end @implementation SDL_QuartzWindow @@ -16,10 +17,27 @@ - (void)deminiaturize:(id)sender { - /* Let the app know they have to redraw everything */ - SDL_PrivateExpose (); - [ super deminiaturize:sender ]; } +- (void)display +{ + /* Do nothing to keep pinstripe pattern from drawing */ +} @end + +/* Delegate for our NSWindow to send SDLQuit() on close */ +@interface SDL_QuartzWindowDelegate : NSObject +{} +- (BOOL)windowShouldClose:(id)sender; +@end + +@implementation SDL_QuartzWindowDelegate +- (BOOL)windowShouldClose:(id)sender { + + SDL_Event event; + event.type = SDL_QUIT; + SDL_PushEvent(&event); + return NO; +} +@end \ No newline at end of file