Skip to content

Commit

Permalink
Date: Sun, 10 Jun 2001 17:33:44 -0500
Browse files Browse the repository at this point in the history
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
  • Loading branch information
Sam Lantinga committed Jun 11, 2001
1 parent 013f3b5 commit 38333d6
Show file tree
Hide file tree
Showing 2 changed files with 29 additions and 6 deletions.
11 changes: 8 additions & 3 deletions src/video/quartz/SDL_QuartzVideo.m
Expand Up @@ -355,7 +355,8 @@ static void QZ_UnsetVideoMode (_THIS) {

/* 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 ];
Expand All @@ -368,10 +369,14 @@ static void QZ_UnsetVideoMode (_THIS) {
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 ) {

Expand Down Expand Up @@ -447,7 +452,7 @@ static void QZ_UnsetVideoMode (_THIS) {
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;
Expand Down
24 changes: 21 additions & 3 deletions src/video/quartz/SDL_QuartzWindow.m
Expand Up @@ -4,6 +4,7 @@ @interface SDL_QuartzWindow : NSWindow
{}
- (void)miniaturize:(id)sender;
- (void)deminiaturize:(id)sender;
- (void)display;
@end

@implementation SDL_QuartzWindow
Expand All @@ -16,10 +17,27 @@ - (void)miniaturize:(id)sender

- (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

0 comments on commit 38333d6

Please sign in to comment.