From d059fe4a3c45594273788a502b715567850ac7d4 Mon Sep 17 00:00:00 2001 From: Stefan Csomor Date: Fri, 20 Jan 2006 17:17:05 +0000 Subject: [PATCH] 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 --- src/mac/carbon/frame.cpp | 15 +++++++++++++++ 1 file changed, 15 insertions(+) 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 -- 2.50.0