diff --git a/include/wx/osx/cocoa/private.h b/include/wx/osx/cocoa/private.h index 24e7c86e5e..e5c9fcf209 100644 --- a/include/wx/osx/cocoa/private.h +++ b/include/wx/osx/cocoa/private.h @@ -260,6 +260,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 5f160ea218..87d8f1a8c4 100644 --- a/src/osx/cocoa/nonownedwnd.mm +++ b/src/osx/cocoa/nonownedwnd.mm @@ -145,6 +145,7 @@ bool shouldHandleSelector(SEL selector) // static NSResponder* s_nextFirstResponder = NULL; +static NSResponder* s_formerFirstResponder = NULL; @interface wxNSWindow : NSWindow { @@ -210,9 +211,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; } @@ -1066,6 +1071,10 @@ WX_NSResponder wxNonOwnedWindowCocoaImpl::GetNextFirstResponder() return s_nextFirstResponder; } +WX_NSResponder wxNonOwnedWindowCocoaImpl::GetFormerFirstResponder() +{ + return s_formerFirstResponder; +} // //