OnActivate change for wxFrame to better deal with prior window focus and textctrl is no coded.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@9764 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
@@ -1053,27 +1053,51 @@ void wxFrame::OnActivate(
|
|||||||
wxActivateEvent& rEvent
|
wxActivateEvent& rEvent
|
||||||
)
|
)
|
||||||
{
|
{
|
||||||
for (wxWindowList::Node* pNode = GetChildren().GetFirst();
|
if ( rEvent.GetActive() )
|
||||||
pNode;
|
|
||||||
pNode = pNode->GetNext())
|
|
||||||
{
|
{
|
||||||
// FIXME all this is totally bogus - we need to do the same as wxPanel,
|
// restore focus to the child which was last focused
|
||||||
// but how to do it without duplicating the code?
|
wxLogTrace(_T("focus"), _T("wxFrame %08x activated."), m_hWnd);
|
||||||
|
|
||||||
// restore focus
|
wxWindow* pParent = m_pWinLastFocused ? m_pWinLastFocused->GetParent()
|
||||||
wxWindow* pChild = pNode->GetData();
|
: NULL;
|
||||||
|
if (!pParent)
|
||||||
|
{
|
||||||
|
pParent = this;
|
||||||
|
}
|
||||||
|
|
||||||
if (!pChild->IsTopLevel()
|
wxSetFocusToChild( pParent
|
||||||
|
,&m_pWinLastFocused
|
||||||
|
);
|
||||||
|
}
|
||||||
|
else // deactivating
|
||||||
|
{
|
||||||
|
//
|
||||||
|
// Remember the last focused child if it is our child
|
||||||
|
//
|
||||||
|
m_pWinLastFocused = FindFocus();
|
||||||
|
|
||||||
|
for (wxWindowList::Node* pNode = GetChildren().GetFirst();
|
||||||
|
pNode;
|
||||||
|
pNode = pNode->GetNext())
|
||||||
|
{
|
||||||
|
// FIXME all this is totally bogus - we need to do the same as wxPanel,
|
||||||
|
// but how to do it without duplicating the code?
|
||||||
|
|
||||||
|
// restore focus
|
||||||
|
wxWindow* pChild = pNode->GetData();
|
||||||
|
|
||||||
|
if (!pChild->IsTopLevel()
|
||||||
#if wxUSE_TOOLBAR
|
#if wxUSE_TOOLBAR
|
||||||
&& !wxDynamicCast(pChild, wxToolBar)
|
&& !wxDynamicCast(pChild, wxToolBar)
|
||||||
#endif // wxUSE_TOOLBAR
|
#endif // wxUSE_TOOLBAR
|
||||||
#if wxUSE_STATUSBAR
|
#if wxUSE_STATUSBAR
|
||||||
&& !wxDynamicCast(pChild, wxStatusBar)
|
&& !wxDynamicCast(pChild, wxStatusBar)
|
||||||
#endif // wxUSE_STATUSBAR
|
#endif // wxUSE_STATUSBAR
|
||||||
)
|
)
|
||||||
{
|
{
|
||||||
pChild->SetFocus();
|
pChild->SetFocus();
|
||||||
return;
|
return;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} // end of wxFrame::OnActivate
|
} // end of wxFrame::OnActivate
|
||||||
|
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user