X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/7ad25aed02fa53612cd94a422904667c46fafcbb..f124c9086b8eda2cf3c9d219f931fb293a281ea6:/src/mac/carbon/frame.cpp?ds=sidebyside diff --git a/src/mac/carbon/frame.cpp b/src/mac/carbon/frame.cpp index b6e5b7672a..399749a1b3 100644 --- a/src/mac/carbon/frame.cpp +++ b/src/mac/carbon/frame.cpp @@ -107,7 +107,7 @@ wxPoint wxFrame::GetClientAreaOrigin() const } } #endif - + return pt; } @@ -232,10 +232,24 @@ void wxFrame::DetachMenuBar() void wxFrame::AttachMenuBar( wxMenuBar *menuBar ) { - wxFrameBase::AttachMenuBar(menuBar); + wxFrame* tlf = wxDynamicCast( wxFindWinFromMacWindow( FrontNonFloatingWindow() ) , wxFrame ); + bool makeCurrent = false; + + // if this is already the current menubar or we are the frontmost window + if ( (tlf == this) || (m_frameMenuBar == wxMenuBar::MacGetInstalledMenuBar()) ) + makeCurrent = true; + // or there is an app-level menubar like MDI + else if ( tlf && (tlf->GetMenuBar() == NULL) && (((wxFrame*)wxTheApp->GetTopWindow()) == this) ) + makeCurrent = true; + + wxFrameBase::AttachMenuBar( menuBar ); if (m_frameMenuBar) + { m_frameMenuBar->SetInvokingWindow( this ); + if (makeCurrent) + m_frameMenuBar->MacInstallMenuBar(); + } } void wxFrame::DoGetClientSize(int *x, int *y) const @@ -310,7 +324,7 @@ void wxFrame::SetToolBar(wxToolBar *toolbar) { if ( m_frameToolBar == toolbar ) return ; - + #if wxMAC_USE_NATIVE_TOOLBAR if ( m_frameToolBar ) m_frameToolBar->MacInstallNativeToolbar( false ) ; @@ -368,5 +382,16 @@ void wxFrame::PositionToolBar() } } } + +void wxFrame::PositionBars() +{ +#if wxUSE_STATUSBAR + PositionStatusBar(); +#endif +#if wxUSE_TOOLBAR + PositionToolBar(); +#endif +} + #endif