From 116d7e58056decdd150cff720ae30abf734935d9 Mon Sep 17 00:00:00 2001 From: Stefan Csomor Date: Thu, 14 Feb 2013 08:07:24 +0000 Subject: [PATCH] closes #13841 git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@73517 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775 --- src/common/combocmn.cpp | 25 +++++++++++++------------ 1 file changed, 13 insertions(+), 12 deletions(-) diff --git a/src/common/combocmn.cpp b/src/common/combocmn.cpp index 06bb040991..c2f01598e2 100644 --- a/src/common/combocmn.cpp +++ b/src/common/combocmn.cpp @@ -2050,21 +2050,23 @@ void wxComboCtrlBase::OnCharEvent(wxKeyEvent& event) void wxComboCtrlBase::OnFocusEvent( wxFocusEvent& event ) { -// On Mac, this leads to infinite recursion and eventually a crash -#ifdef __WXMAC__ - wxUnusedVar(event); -#else + // On Mac, setting focus here leads to infinite recursion and eventually + // a crash due to the SetFocus call producing another event. + // Handle Mac in OnIdleEvent using m_resetFocus. + if ( event.GetEventType() == wxEVT_SET_FOCUS ) { - wxWindow* tc = GetTextCtrl(); - if ( tc && tc != DoFindFocus() ) + if ( GetTextCtrl() && !GetTextCtrl()->HasFocus() ) { - tc->SetFocus(); +#ifdef __WXMAC__ + m_resetFocus = true; +#else + GetTextCtrl()->SetFocus(); +#endif } } - + Refresh(); -#endif } void wxComboCtrlBase::OnIdleEvent( wxIdleEvent& WXUNUSED(event) ) @@ -2072,9 +2074,8 @@ void wxComboCtrlBase::OnIdleEvent( wxIdleEvent& WXUNUSED(event) ) if ( m_resetFocus ) { m_resetFocus = false; - wxWindow* tc = GetTextCtrl(); - if ( tc ) - tc->SetFocus(); + if ( GetTextCtrl() ) + GetTextCtrl()->SetFocus(); } } -- 2.45.2