diff --git a/include/wx/osx/cocoa/private.h b/include/wx/osx/cocoa/private.h index 13e25f4eff..0a8f766a41 100644 --- a/include/wx/osx/cocoa/private.h +++ b/include/wx/osx/cocoa/private.h @@ -264,6 +264,7 @@ public : void RestoreWindowLevel(); static WX_NSResponder GetNextFirstResponder() ; + static WX_NSResponder GetFormerFirstResponder() ; protected : CGWindowLevel m_macWindowLevel; WXWindow m_macWindow; diff --git a/src/osx/cocoa/nonownedwnd.mm b/src/osx/cocoa/nonownedwnd.mm index 8a83c71d46..c3124d27f0 100644 --- a/src/osx/cocoa/nonownedwnd.mm +++ b/src/osx/cocoa/nonownedwnd.mm @@ -158,6 +158,7 @@ static bool IsUsingFullScreenApi(WXWindow macWindow) // static NSResponder* s_nextFirstResponder = NULL; +static NSResponder* s_formerFirstResponder = NULL; @interface wxNSWindow : NSWindow { @@ -223,9 +224,13 @@ static NSResponder* s_nextFirstResponder = NULL; - (BOOL)makeFirstResponder:(NSResponder *)aResponder { + NSResponder* tempFormer = s_formerFirstResponder; + NSResponder* tempNext = s_nextFirstResponder; s_nextFirstResponder = aResponder; + s_formerFirstResponder = [[NSApp keyWindow] firstResponder]; BOOL retval = [super makeFirstResponder:aResponder]; - s_nextFirstResponder = nil; + s_nextFirstResponder = tempNext; + s_formerFirstResponder = tempFormer; return retval; } @@ -1122,6 +1127,10 @@ WX_NSResponder wxNonOwnedWindowCocoaImpl::GetNextFirstResponder() return s_nextFirstResponder; } +WX_NSResponder wxNonOwnedWindowCocoaImpl::GetFormerFirstResponder() +{ + return s_formerFirstResponder; +} // //