Commit 4fc311ff authored by Sam Lantinga's avatar Sam Lantinga

Date: Mon, 5 May 2003 00:08:51 -0400

From: Darrell Walisser
Subject: SDL Active Events Patch

Hi Guys,
        I was reading sdl-devel the other day and remembered we don't handle
SDL_APPACTIVE and SDL_APPMOUSEFOCUS. I hacked together a quick patch to
do just this. One thing to note - there are actually two ways to
"iconify" the SDL window (which sets SDL_APPACTIVE): hiding the entire
application (for example, option-click on some other window) and
minimizing the window to the dock. I treat both as SDL_APPACTIVE, since
the window is no longer visible.

Cheers,
Darrell

--HG--
extra : convert_revision : svn%3Ac70aab31-4412-0410-b14c-859654838e24/trunk%40632
parent e8ce0bc1
......@@ -583,6 +583,16 @@ static void QZ_PumpEvents (_THIS)
QZ_PrivateWarpCursor (this, p.x, p.y);
}
else
if ( !isInGameWin && (SDL_GetAppState() & SDL_APPMOUSEFOCUS) ) {
SDL_PrivateAppActive (0, SDL_APPMOUSEFOCUS);
}
else
if ( isInGameWin && !(SDL_GetAppState() & SDL_APPMOUSEFOCUS) ) {
SDL_PrivateAppActive (1, SDL_APPMOUSEFOCUS);
}
break;
case NSScrollWheel:
if ( isInGameWin ) {
......
......@@ -31,6 +31,9 @@ static void QZ_SetPortAlphaOpaque () {
- (void)miniaturize:(id)sender;
- (void)display;
- (void)setFrame:(NSRect)frameRect display:(BOOL)flag;
- (void)appDidHide:(NSNotification*)note;
- (void)appDidUnhide:(NSNotification*)note;
- (id)initWithContentRect:(NSRect)contentRect styleMask:(unsigned int)styleMask backing:(NSBackingStoreType)backingType defer:(BOOL)flag;
@end
@implementation SDL_QuartzWindow
......@@ -51,6 +54,9 @@ static void QZ_SetPortAlphaOpaque () {
QZ_SetPortAlphaOpaque ();
}
/* window is hidden now */
SDL_PrivateAppActive (0, SDL_APPACTIVE);
[ super miniaturize:sender ];
}
......@@ -63,6 +69,9 @@ static void QZ_SetPortAlphaOpaque () {
*/
if ( (SDL_VideoSurface->flags & SDL_OPENGL) == 0)
QZ_SetPortAlphaOpaque ();
/* window is visible again */
SDL_PrivateAppActive (1, SDL_APPACTIVE);
}
- (void)setFrame:(NSRect)frameRect display:(BOOL)flag
......@@ -100,6 +109,28 @@ static void QZ_SetPortAlphaOpaque () {
}
}
- (void)appDidHide:(NSNotification*)note
{
SDL_PrivateAppActive (0, SDL_APPACTIVE);
}
- (void)appDidUnhide:(NSNotification*)note
{
SDL_PrivateAppActive (1, SDL_APPACTIVE);
}
- (id)initWithContentRect:(NSRect)contentRect styleMask:(unsigned int)styleMask backing:(NSBackingStoreType)backingType defer:(BOOL)flag
{
/* Make our window subclass receive these application notifications */
[ [ NSNotificationCenter defaultCenter ] addObserver:self
selector:@selector(appDidHide:) name:NSApplicationDidHideNotification object:NSApp ];
[ [ NSNotificationCenter defaultCenter ] addObserver:self
selector:@selector(appDidUnhide:) name:NSApplicationDidUnhideNotification object:NSApp ];
return [ super initWithContentRect:contentRect styleMask:styleMask backing:backingType defer:flag ];
}
@end
/* Delegate for our NSWindow to send SDLQuit() on close */
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment