]> git.saurik.com Git - wxWidgets.git/commitdiff
Supporting a SetMenuBar call when this frame is already showing its menu
authorStefan Csomor <csomor@advancedconcepts.ch>
Fri, 20 Jan 2006 17:17:05 +0000 (17:17 +0000)
committerStefan Csomor <csomor@advancedconcepts.ch>
Fri, 20 Jan 2006 17:17:05 +0000 (17:17 +0000)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@37010 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775

src/mac/carbon/frame.cpp

index b6e5b7672ae0c5a9bed6756aa7412fc937c4995a..dbc406c76886dfd7f2fd7d1f24665d6c525b4fb7 100644 (file)
@@ -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