]> git.saurik.com Git - wxWidgets.git/blobdiff - src/mac/carbon/frame.cpp
removed code refreshing toolbar on every MDI child move -- no idea why was it there...
[wxWidgets.git] / src / mac / carbon / frame.cpp
index b6e5b7672ae0c5a9bed6756aa7412fc937c4995a..12853edfa48683492d2c2e78c584a9df6866887f 100644 (file)
@@ -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 ) ;