Fixed problem where kill focus event was sent to control

getting the focus.


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@18946 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Julian Smart
2003-01-26 19:02:59 +00:00
parent 9afed9b15c
commit bd66e90287
2 changed files with 30 additions and 14 deletions

View File

@@ -227,24 +227,32 @@ void wxWindowMac::SetFocus()
{
if (gFocusWindow )
{
#if wxUSE_CARET
#if wxUSE_CARET
// Deal with caret
if ( gFocusWindow->m_caret )
{
gFocusWindow->m_caret->OnKillFocus();
}
#endif // wxUSE_CARET
#ifndef __WXUNIVERSAL__
#endif // wxUSE_CARET
#ifndef __WXUNIVERSAL__
wxControl* control = wxDynamicCast( gFocusWindow , wxControl ) ;
if ( control && control->GetMacControl() )
{
UMASetKeyboardFocus( (WindowRef) gFocusWindow->MacGetRootWindow() , (ControlHandle) control->GetMacControl() , kControlFocusNoPart ) ;
control->MacRedrawControl() ;
}
#endif
wxFocusEvent event(wxEVT_KILL_FOCUS, gFocusWindow->m_windowId);
event.SetEventObject(gFocusWindow);
gFocusWindow->GetEventHandler()->ProcessEvent(event) ;
#endif
// Without testing the window id, for some reason
// a kill focus event can still be sent to
// the control just being focussed.
int thisId = this->m_windowId;
int gFocusWindowId = gFocusWindow->m_windowId;
if (gFocusWindowId != thisId)
{
wxFocusEvent event(wxEVT_KILL_FOCUS, gFocusWindow->m_windowId);
event.SetEventObject(gFocusWindow);
gFocusWindow->GetEventHandler()->ProcessEvent(event) ;
}
}
gFocusWindow = this ;
{

View File

@@ -227,24 +227,32 @@ void wxWindowMac::SetFocus()
{
if (gFocusWindow )
{
#if wxUSE_CARET
#if wxUSE_CARET
// Deal with caret
if ( gFocusWindow->m_caret )
{
gFocusWindow->m_caret->OnKillFocus();
}
#endif // wxUSE_CARET
#ifndef __WXUNIVERSAL__
#endif // wxUSE_CARET
#ifndef __WXUNIVERSAL__
wxControl* control = wxDynamicCast( gFocusWindow , wxControl ) ;
if ( control && control->GetMacControl() )
{
UMASetKeyboardFocus( (WindowRef) gFocusWindow->MacGetRootWindow() , (ControlHandle) control->GetMacControl() , kControlFocusNoPart ) ;
control->MacRedrawControl() ;
}
#endif
wxFocusEvent event(wxEVT_KILL_FOCUS, gFocusWindow->m_windowId);
event.SetEventObject(gFocusWindow);
gFocusWindow->GetEventHandler()->ProcessEvent(event) ;
#endif
// Without testing the window id, for some reason
// a kill focus event can still be sent to
// the control just being focussed.
int thisId = this->m_windowId;
int gFocusWindowId = gFocusWindow->m_windowId;
if (gFocusWindowId != thisId)
{
wxFocusEvent event(wxEVT_KILL_FOCUS, gFocusWindow->m_windowId);
event.SetEventObject(gFocusWindow);
gFocusWindow->GetEventHandler()->ProcessEvent(event) ;
}
}
gFocusWindow = this ;
{