X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/1fc0b5afe7813dd301098519e40bfa6e98f328cd..2ddb4d13585d5235556119fb1937273da9e433a3:/src/mac/carbon/window.cpp diff --git a/src/mac/carbon/window.cpp b/src/mac/carbon/window.cpp index 7097a160b9..22d291df2a 100644 --- a/src/mac/carbon/window.cpp +++ b/src/mac/carbon/window.cpp @@ -9,10 +9,6 @@ // Licence: wxWindows licence ///////////////////////////////////////////////////////////////////////////// -#if defined(__GNUG__) && !defined(NO_GCC_PRAGMA) -#pragma implementation "window.h" -#endif - #include "wx/wxprec.h" #include "wx/menu.h" @@ -343,9 +339,15 @@ static pascal OSStatus wxMacWindowControlEventHandler( EventHandlerCallRef handl thisWindow->GetCaret()->OnKillFocus(); } #endif // wxUSE_CARET - wxFocusEvent event( wxEVT_KILL_FOCUS, thisWindow->GetId()); - event.SetEventObject(thisWindow); - thisWindow->GetEventHandler()->ProcessEvent(event) ; + static bool inKillFocusEvent = false ; + if ( !inKillFocusEvent ) + { + inKillFocusEvent = true ; + wxFocusEvent event( wxEVT_KILL_FOCUS, thisWindow->GetId()); + event.SetEventObject(thisWindow); + thisWindow->GetEventHandler()->ProcessEvent(event) ; + inKillFocusEvent = false ; + } } else { @@ -597,7 +599,10 @@ void wxWindowMac::MacControlUserPaneActivateProc(bool activating) wxInt16 wxWindowMac::MacControlUserPaneFocusProc(wxInt16 action) { - return kControlNoPart ; + if ( AcceptsFocus() ) + return 1 ; + else + return kControlNoPart ; } void wxWindowMac::MacControlUserPaneBackgroundProc(void* info) @@ -757,6 +762,7 @@ wxWindowMac::~wxWindowMac() { // in case the callback might be called during destruction wxRemoveMacControlAssociation( this) ; + ::RemoveEventHandler( (EventHandlerRef ) m_macControlEventHandler ) ; // we currently are not using this hook // ::SetControlColorProc( *m_peer , NULL ) ; m_peer->Dispose() ;