// Default activation behaviour - set the focus for the first child // subwindow found. void wxFrame::OnActivate(wxActivateEvent& event) { if ( !event.GetActive() ) { // remember the last focused child if it is our child m_winLastFocused = FindFocus(); // 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 ) m_winLastFocused = NULL; break; } win = win->GetParent(); } event.Skip(); } else { // restore focus to the child which was last focused wxWindow *parent = m_winLastFocused ? m_winLastFocused->GetParent() : NULL; if (parent == NULL) parent = this; wxSetFocusToChild(parent, &m_winLastFocused); #if wxUSE_MENUS if (m_frameMenuBar != NULL) { m_frameMenuBar->MacInstallMenuBar(); } else { wxFrame *tlf = wxDynamicCast( wxTheApp->GetTopWindow(), wxFrame ); if (tlf != NULL) { // Trying top-level frame membar if (tlf->GetMenuBar()) tlf->GetMenuBar()->MacInstallMenuBar(); } } #endif } }
void wxTopLevelWindowMSW::DoRestoreLastFocus() { wxWindow *parent = m_winLastFocused ? m_winLastFocused->GetParent() : NULL; if ( !parent ) { parent = this; } wxSetFocusToChild(parent, &m_winLastFocused); }
// Default activation behaviour - set the focus for the first child // subwindow found. void wxFrame::OnActivate(wxActivateEvent& event) { if ( !event.GetActive() ) { // remember the last focused child if it is our child m_winLastFocused = FindFocus(); // 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 ) { m_winLastFocused = NULL; } break; } win = win->GetParent(); } event.Skip(); } else { // restore focus to the child which was last focused wxWindow *parent = m_winLastFocused ? m_winLastFocused->GetParent() : NULL; if ( !parent ) { parent = this; } wxSetFocusToChild(parent, &m_winLastFocused); if ( m_frameMenuBar != NULL ) { m_frameMenuBar->MacInstallMenuBar() ; } else if (wxTheApp->GetTopWindow() && wxTheApp->GetTopWindow()->IsKindOf(CLASSINFO(wxFrame))) { // Trying toplevel frame menbar if( ((wxFrame*)wxTheApp->GetTopWindow())->GetMenuBar() ) ((wxFrame*)wxTheApp->GetTopWindow())->GetMenuBar()->MacInstallMenuBar(); } } }
bool wxControlContainer::SetFocusToChild() { return wxSetFocusToChild(m_winParent, NULL); }
bool wxControlContainerBase::SetFocusToChild() { return wxSetFocusToChild(m_winParent, &m_winLastFocused); }