From 91f25e0bbdaa05d7be3c710b41648d899ded7bce Mon Sep 17 00:00:00 2001 From: Stefan Csomor Date: Sat, 17 May 2014 19:14:21 +0000 Subject: [PATCH] using the base class wxHAS_NATIVE_ENABLED_MANAGEMENT in cocoa disabling/enabling child windows, fixes #16232, fixes #15495 git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@76565 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775 --- include/wx/osx/cocoa/private.h | 1 + src/osx/cocoa/nonownedwnd.mm | 11 ++++++++++- 2 files changed, 11 insertions(+), 1 deletion(-) 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; +} // //