Date: Sun, 10 Jun 2001 17:33:44 -0500
authorSam Lantinga <slouken@lokigames.com>
Mon, 11 Jun 2001 00:08:10 +0000
changeset 56 ce9cd2cf0d0d
parent 55 55f1f1b3e27d
child 57 ec550054db3b
Date: Sun, 10 Jun 2001 17:33:44 -0500 From: Darrell Walisser <dwaliss1@purdue.edu> 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
src/video/quartz/SDL_QuartzVideo.m
src/video/quartz/SDL_QuartzWindow.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;
--- 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