From: Stefan Csomor Date: Mon, 7 Mar 2011 20:26:40 +0000 (+0000) Subject: support app activated and deactivated events, also bring back float_on_parent windows... X-Git-Url: https://git.saurik.com/wxWidgets.git/commitdiff_plain/74518cea410bc1d8dc8438e81199572eac145a96 support app activated and deactivated events, also bring back float_on_parent windows to normal level on deactivate to avoid behaving like stay_on_top git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@67146 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775 --- diff --git a/src/osx/cocoa/utils.mm b/src/osx/cocoa/utils.mm index f8926e800b..8d32b3a5c7 100644 --- a/src/osx/cocoa/utils.mm +++ b/src/osx/cocoa/utils.mm @@ -127,6 +127,49 @@ void wxBell() return NO; } +- (void)applicationDidBecomeActive:(NSNotification *)notification +{ + wxUnusedVar(notification); + + for ( wxWindowList::const_iterator i = wxTopLevelWindows.begin(), + end = wxTopLevelWindows.end(); + i != end; + ++i ) + { + wxTopLevelWindow * const win = static_cast(*i); + wxNonOwnedWindowImpl* winimpl = win ? win->GetNonOwnedPeer() : NULL; + WXWindow nswindow = win ? win->GetWXWindow() : nil; + + if ( nswindow && [nswindow hidesOnDeactivate] == NO && winimpl) + winimpl->RestoreWindowLevel(); + } + if ( wxTheApp ) + wxTheApp->SetActive( true , NULL ) ; +} + +- (void)applicationWillResignActive:(NSNotification *)notification +{ + wxUnusedVar(notification); + for ( wxWindowList::const_iterator i = wxTopLevelWindows.begin(), + end = wxTopLevelWindows.end(); + i != end; + ++i ) + { + wxTopLevelWindow * const win = static_cast(*i); + WXWindow nswindow = win ? win->GetWXWindow() : nil; + + if ( nswindow && [nswindow level] == kCGFloatingWindowLevel && [nswindow hidesOnDeactivate] == NO ) + [nswindow setLevel:kCGNormalWindowLevel]; + } +} + +- (void)applicationDidResignActive:(NSNotification *)notification +{ + wxUnusedVar(notification); + if ( wxTheApp ) + wxTheApp->SetActive( false , NULL ) ; +} + @end /*