fix SetFocus() in wxDialog-derived class ctor (which used to be ignored); this replaces patch 769552

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@23937 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Vadim Zeitlin
2003-09-26 17:35:54 +00:00
parent e19971c370
commit 2736a5def9

View File

@@ -863,9 +863,13 @@ void wxTopLevelWindowMSW::OnActivate(wxActivateEvent& event)
{
if ( event.GetActive() )
{
// restore focus to the child which was last focused
// wxLogTrace(_T("focus"), _T("wxTLW %08x activated."), (int) m_hWnd);
// restore focus to the child which was last focused unless we already
// have it
wxLogTrace(_T("focus"), _T("wxTLW %08x activated."), (int) m_hWnd);
wxWindow *winFocus = FindFocus();
if ( !winFocus || wxGetTopLevelParent(winFocus) != this )
{
wxWindow *parent = m_winLastFocused ? m_winLastFocused->GetParent()
: NULL;
if ( !parent )
@@ -875,6 +879,7 @@ void wxTopLevelWindowMSW::OnActivate(wxActivateEvent& event)
wxSetFocusToChild(parent, &m_winLastFocused);
}
}
else // deactivating
{
// remember the last focused child if it is our child
@@ -884,23 +889,12 @@ void wxTopLevelWindowMSW::OnActivate(wxActivateEvent& event)
{
// let it know that it doesn't have focus any more
m_winLastFocused->HandleKillFocus((WXHWND)NULL);
}
// so we NULL it out if it's a child from some other frame
wxWindow *win = m_winLastFocused;
while ( win )
{
if ( win->IsTopLevel() )
{
if ( win != this )
// and don't remember it if it's a child from some other frame
if ( wxGetTopLevelParent(m_winLastFocused) != this )
{
m_winLastFocused = NULL;
}
break;
}
win = win->GetParent();
}
wxLogTrace(_T("focus"),