From: Stefan Csomor Date: Fri, 20 Jan 2006 17:17:05 +0000 (+0000) Subject: Supporting a SetMenuBar call when this frame is already showing its menu X-Git-Url: https://git.saurik.com/wxWidgets.git/commitdiff_plain/d059fe4a3c45594273788a502b715567850ac7d4?ds=inline Supporting a SetMenuBar call when this frame is already showing its menu git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@37010 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775 --- diff --git a/src/mac/carbon/frame.cpp b/src/mac/carbon/frame.cpp index b6e5b7672a..dbc406c768 100644 --- a/src/mac/carbon/frame.cpp +++ b/src/mac/carbon/frame.cpp @@ -232,10 +232,25 @@ void wxFrame::DetachMenuBar() void wxFrame::AttachMenuBar( wxMenuBar *menuBar ) { + wxToplLevelWindowMac* tlw = wxFindWinFromMacWindow(FrontNonFloatingWindow()) ; + + bool makeCurrent = false ; + + // if this is already the current menubar or we are the frontmost window + if ( m_frameMenuBar == wxMenuBar::MacGetInstalledMenuBar() || tlw == this ) + makeCurrent = true ; + // or we have a situation where this is a App Level Menubar like MDI + else if ( tlw != NULL && tlw->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