Mercurial > sdl-ios-xcode
changeset 631:52864d66d168
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
author | Sam Lantinga <slouken@libsdl.org> |
---|---|
date | Thu, 29 May 2003 04:52:36 +0000 |
parents | 550bccdf04bd |
children | 85e104fe14c2 |
files | src/video/quartz/SDL_QuartzEvents.m src/video/quartz/SDL_QuartzWindow.m |
diffstat | 2 files changed, 41 insertions(+), 0 deletions(-) [+] |
line wrap: on
line diff
--- a/src/video/quartz/SDL_QuartzEvents.m Thu May 29 04:44:13 2003 +0000 +++ b/src/video/quartz/SDL_QuartzEvents.m Thu May 29 04:52:36 2003 +0000 @@ -583,6 +583,16 @@ 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 ) {
--- a/src/video/quartz/SDL_QuartzWindow.m Thu May 29 04:44:13 2003 +0000 +++ b/src/video/quartz/SDL_QuartzWindow.m Thu May 29 04:52:36 2003 +0000 @@ -31,6 +31,9 @@ - (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 @@ QZ_SetPortAlphaOpaque (); } + /* window is hidden now */ + SDL_PrivateAppActive (0, SDL_APPACTIVE); + [ super miniaturize:sender ]; } @@ -63,6 +69,9 @@ */ 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 @@ } } +- (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 */