]> git.saurik.com Git - wxWidgets.git/blobdiff - src/mac/menu.cpp
Released menubar capture before menu popup was captured.
[wxWidgets.git] / src / mac / menu.cpp
index 9d308de12071467827fcf58f1a6f4211c1e90186..3e6277ac5b38967c371269ee66a201d8fb37ed7d 100644 (file)
@@ -56,7 +56,11 @@ const short kwxMacAppleMenuId = 1 ;
 
 // Construct a menu with optional title (then use append)
 
 
 // Construct a menu with optional title (then use append)
 
+#ifdef __UNIX__
+short wxMenu::s_macNextMenuId = 3 ;
+#else
 short wxMenu::s_macNextMenuId = 2 ;
 short wxMenu::s_macNextMenuId = 2 ;
+#endif
 
 void wxMenu::Init()
 {
 
 void wxMenu::Init()
 {
@@ -343,22 +347,6 @@ bool wxMenu::ProcessCommand(wxCommandEvent & event)
 // other
 // ---------------------------------------------------------------------------
 
 // other
 // ---------------------------------------------------------------------------
 
-void wxMenu::Attach(wxMenuBar *menubar)
-{
-    // menu can be in at most one menubar because otherwise they would both
-    // delete the menu pointer
-    wxASSERT_MSG( !m_menuBar, wxT("menu belongs to 2 menubars, expect a crash") );
-
-    m_menuBar = menubar;
-}
-
-void wxMenu::Detach()
-{
-    wxASSERT_MSG( m_menuBar, wxT("can't detach menu if it's not attached") );
-
-    m_menuBar = NULL;
-}
-
 wxWindow *wxMenu::GetWindow() const
 {
     if ( m_invokingWindow != NULL )
 wxWindow *wxMenu::GetWindow() const
 {
     if ( m_invokingWindow != NULL )
@@ -631,6 +619,9 @@ void wxMenuBar::RebuildAccelTable()
 
 void wxMenuBar::MacInstallMenuBar() 
 {
 
 void wxMenuBar::MacInstallMenuBar() 
 {
+       if ( s_macInstalledMenuBar == this )
+               return ;
+               
        Handle menubar = ::GetNewMBar( kwxMacMenuBarResource ) ;
        wxString message ;
        wxCHECK_RET( menubar != NULL, "can't read MBAR resource" );
        Handle menubar = ::GetNewMBar( kwxMacMenuBarResource ) ;
        wxString message ;
        wxCHECK_RET( menubar != NULL, "can't read MBAR resource" );
@@ -972,8 +963,6 @@ bool wxMenuBar::Append(wxMenu *menu, const wxString& title)
     if ( !wxMenuBarBase::Append(menu, title) )
         return FALSE;
 
     if ( !wxMenuBarBase::Append(menu, title) )
         return FALSE;
 
-    menu->Attach(this);
-
     m_titles.Add(title);
 
     if ( IsAttached() )
     m_titles.Add(title);
 
     if ( IsAttached() )
@@ -997,11 +986,14 @@ bool wxMenuBar::Append(wxMenu *menu, const wxString& title)
     return TRUE;
 }
 
     return TRUE;
 }
 
-void wxMenuBar::Attach(wxFrame *frame)
+void wxMenuBar::Detach()
 {
 {
-//    wxASSERT_MSG( !IsAttached(), wxT("menubar already attached!") );
+    wxMenuBarBase::Detach() ;
+}
 
 
-    m_menuBarFrame = frame;
+void wxMenuBar::Attach(wxFrame *frame)
+{
+    wxMenuBarBase::Attach( frame ) ;
 
 #if wxUSE_ACCEL
     RebuildAccelTable();
 
 #if wxUSE_ACCEL
     RebuildAccelTable();