From addd2dc5431aeb0540ead9124335416bfd149123 Mon Sep 17 00:00:00 2001 From: Sam Lantinga Date: Mon, 11 Jun 2001 00:08:10 +0000 Subject: [PATCH] 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 --HG-- extra : convert_revision : svn%3Ac70aab31-4412-0410-b14c-859654838e24/trunk%4057 --- src/video/quartz/SDL_QuartzVideo.m | 11 ++++++++--- src/video/quartz/SDL_QuartzWindow.m | 24 +++++++++++++++++++++--- 2 files changed, 29 insertions(+), 6 deletions(-) diff --git a/src/video/quartz/SDL_QuartzVideo.m b/src/video/quartz/SDL_QuartzVideo.m index c142a550..01c077ba 100644 --- a/src/video/quartz/SDL_QuartzVideo.m +++ b/src/video/quartz/SDL_QuartzVideo.m @@ -355,7 +355,8 @@ static SDL_Surface* QZ_SetVideoWindowed (_THIS, SDL_Surface *current, int width, /* 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 @@ static SDL_Surface* QZ_SetVideoWindowed (_THIS, SDL_Surface *current, int width, 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 @@ static SDL_Surface* QZ_SetVideoMode (_THIS, SDL_Surface *current, int width, 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 --git a/src/video/quartz/SDL_QuartzWindow.m b/src/video/quartz/SDL_QuartzWindow.m index dd0f4f03..39b84fb4 100644 --- a/src/video/quartz/SDL_QuartzWindow.m +++ b/src/video/quartz/SDL_QuartzWindow.m @@ -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