X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/2f1ae4143271ae63a17e052a1a471d16e9cd8c44..b6ca231f85a50ea7dc5af6d0f3c98854970dffdc:/src/mac/frame.cpp diff --git a/src/mac/frame.cpp b/src/mac/frame.cpp index b5498fec48..bbbef8f74b 100644 --- a/src/mac/frame.cpp +++ b/src/mac/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" @@ -54,6 +54,14 @@ bool wxFrame::m_useNativeStatusBar = FALSE; void wxFrame::Init() { + m_frameMenuBar = NULL; + +#if wxUSE_TOOLBAR + m_frameToolBar = NULL ; +#endif + m_frameStatusBar = NULL; + m_winLastFocused = NULL ; + m_iconized = FALSE; #if wxUSE_TOOLTIPS @@ -94,13 +102,6 @@ bool wxFrame::Create(wxWindow *parent, long style, const wxString& name) { - m_frameMenuBar = NULL; - -#if wxUSE_TOOLBAR - m_frameToolBar = NULL ; -#endif - m_frameStatusBar = NULL; - SetBackgroundColour(wxSystemSettings::GetSystemColour(wxSYS_COLOUR_APPWORKSPACE)); if ( id > -1 ) @@ -199,8 +200,9 @@ wxStatusBar *wxFrame::OnCreateStatusBar(int number, long style, wxWindowID id, { wxStatusBar *statusBar = NULL; - statusBar = new wxStatusBar(this, id, style, name); - + statusBar = new wxStatusBar(this, id, + style, name); + statusBar->SetSize( 100 , 15 ) ; statusBar->SetFieldsCount(number); return statusBar; } @@ -216,7 +218,7 @@ void wxFrame::PositionStatusBar() // Since we wish the status bar to be directly under the client area, // we use the adjusted sizes without using wxSIZE_NO_ADJUSTMENTS. - m_frameStatusBar->SetSize(0, h, w, WX_MAC_STATUSBAR_HEIGHT ); + m_frameStatusBar->SetSize(0, h, w, sh); } } @@ -227,9 +229,8 @@ void wxFrame::SetMenuBar(wxMenuBar *menuBar) return; } - m_frameMenuBar = NULL; m_frameMenuBar = menuBar; - m_frameMenuBar->MacInstallMenuBar() ; +// m_frameMenuBar->MacInstallMenuBar() ; m_frameMenuBar->Attach(this); } @@ -258,10 +259,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() ) @@ -272,7 +284,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 @@ -282,9 +294,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 @@ -296,8 +316,7 @@ void wxFrame::DoGetClientSize(int *x, int *y) const { int statusX, statusY; GetStatusBar()->GetClientSize(&statusX, &statusY); - // right now this is a constant, this might change someday - *y -= WX_MAC_STATUSBAR_HEIGHT ; + *y -= statusY; } #endif // wxUSE_STATUSBAR