X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/5b781a6729859abc77e6ca5b1f81cbaad974a78f..b97e22c0ca7469762e422960245009648b0e0edf:/src/mac/carbon/frame.cpp diff --git a/src/mac/carbon/frame.cpp b/src/mac/carbon/frame.cpp index 2a4ee0b968..aded221ea5 100644 --- a/src/mac/carbon/frame.cpp +++ b/src/mac/carbon/frame.cpp @@ -14,7 +14,7 @@ #endif #include "wx/frame.h" -#include "wx/mac/statusbr.h" +#include "wx/statusbr.h" #include "wx/toolbar.h" #include "wx/menuitem.h" #include "wx/menu.h" @@ -100,6 +100,7 @@ bool wxFrame::Create(wxWindow *parent, m_frameToolBar = NULL ; #endif m_frameStatusBar = NULL; + m_winLastFocused = NULL ; SetBackgroundColour(wxSystemSettings::GetSystemColour(wxSYS_COLOUR_APPWORKSPACE)); @@ -230,7 +231,7 @@ void wxFrame::SetMenuBar(wxMenuBar *menuBar) m_frameMenuBar = NULL; m_frameMenuBar = menuBar; - m_frameMenuBar->MacInstallMenuBar() ; +// m_frameMenuBar->MacInstallMenuBar() ; m_frameMenuBar->Attach(this); } @@ -259,10 +260,21 @@ void wxFrame::OnActivate(wxActivateEvent& event) { if ( !event.GetActive() ) { + // remember the last focused child + m_winLastFocused = FindFocus(); + while ( m_winLastFocused ) + { + if ( GetChildren().Find(m_winLastFocused) ) + break; + + m_winLastFocused = m_winLastFocused->GetParent(); + } + event.Skip(); - return; } - + else + { +/* for ( wxWindowList::Node *node = GetChildren().GetFirst(); node; node = node->GetNext() ) @@ -273,7 +285,7 @@ void wxFrame::OnActivate(wxActivateEvent& event) // restore focus wxWindow *child = node->GetData(); - if ( !child->IsTopLevel() + if ( !child->IsTopLevel() && child->AcceptsFocus() #if wxUSE_TOOLBAR && !wxDynamicCast(child, wxToolBar) #endif // wxUSE_TOOLBAR @@ -283,9 +295,17 @@ void wxFrame::OnActivate(wxActivateEvent& event) ) { child->SetFocus(); - return; + break; } } + */ + wxSetFocusToChild(this, &m_winLastFocused); + + if ( m_frameMenuBar != NULL ) + { + m_frameMenuBar->MacInstallMenuBar() ; + } + } } void wxFrame::DoGetClientSize(int *x, int *y) const