]> git.saurik.com Git - wxWidgets.git/blobdiff - src/mac/carbon/menu.cpp
correcting DropData behaviour so that preferred format is handled correctly
[wxWidgets.git] / src / mac / carbon / menu.cpp
index 8cb501104269467e4e2bc2b2eb0e333b876c9c12..c37c9b88353b475f361a33e2418c17ef949d0fa8 100644 (file)
@@ -49,34 +49,6 @@ const short kwxMacAppleMenuId = 1 ;
 
 // Find an item given the Macintosh Menu Reference
 
-#if KEY_wxList_DEPRECATED
-wxList wxWinMacMenuList(wxKEY_INTEGER);
-wxMenu *wxFindMenuFromMacMenu(MenuRef inMenuRef)
-{
-    wxNode *node = wxWinMacMenuList.Find((long)inMenuRef);
-    if (!node)
-        return NULL;
-    return (wxMenu *)node->GetData();
-}
-
-void wxAssociateMenuWithMacMenu(MenuRef inMenuRef, wxMenu *menu) ;
-void wxAssociateMenuWithMacMenu(MenuRef inMenuRef, wxMenu *menu)
-{
-    // adding NULL MenuRef is (first) surely a result of an error and
-    // (secondly) breaks menu command processing
-    wxCHECK_RET( inMenuRef != (MenuRef) NULL, wxT("attempt to add a NULL MenuRef to menu list") );
-
-    if ( !wxWinMacMenuList.Find((long)inMenuRef) )
-        wxWinMacMenuList.Append((long)inMenuRef, menu);
-}
-
-void wxRemoveMacMenuAssociation(wxMenu *menu) ;
-void wxRemoveMacMenuAssociation(wxMenu *menu)
-{
-    wxWinMacMenuList.DeleteObject(menu);
-}
-#else
-
 WX_DECLARE_HASH_MAP(MenuRef, wxMenu*, wxPointerHash, wxPointerEqual, MacMenuMap);
 
 static MacMenuMap wxWinMacMenuList;
@@ -112,7 +84,6 @@ void wxRemoveMacMenuAssociation(wxMenu *menu)
         }
     }
 }
-#endif // deprecated wxList
 
 // ============================================================================
 // implementation
@@ -135,15 +106,15 @@ wxMenu *
 _wxMenuAt(const wxMenuList &menuList, size_t pos)
 {
     wxMenuList::compatibility_iterator menuIter = menuList.GetFirst();
-  
+
     while (pos-- > 0) menuIter = menuIter->GetNext();
-    
+
     return menuIter->GetData() ;
 }
 
 void wxMenu::Init()
 {
-    m_doBreak = FALSE;
+    m_doBreak = false;
     m_startRadioGroup = -1;
 
     // create the menu
@@ -158,7 +129,7 @@ void wxMenu::Init()
     wxAssociateMenuWithMacMenu( (MenuRef)m_hMenu , this ) ;
 
     // if we have a title, insert it in the beginning of the menu
-    if ( !!m_title )
+    if ( !m_title.empty() )
     {
         Append(idMenuTitle, m_title) ;
         AppendSeparator() ;
@@ -250,7 +221,7 @@ bool wxMenu::DoInsertOrAppend(wxMenuItem *pItem, size_t pos)
     {
         GetMenuBar()->Refresh();
     }
-    return TRUE ;
+    return true ;
 }
 
 void wxMenu::EndRadioGroup()
@@ -263,7 +234,7 @@ wxMenuItem* wxMenu::DoAppend(wxMenuItem *item)
 {
     wxCHECK_MSG( item, NULL, _T("NULL item in wxMenu::DoAppend") );
 
-    bool check = FALSE;
+    bool check = false;
 
     if ( item->GetKind() == wxITEM_RADIO )
     {
@@ -279,7 +250,7 @@ wxMenuItem* wxMenu::DoAppend(wxMenuItem *item)
             item->SetRadioGroupEnd(m_startRadioGroup);
 
             // ensure that we have a checked item in the radio group
-            check = TRUE;
+            check = true;
         }
         else // extend the current radio group
         {
@@ -310,7 +281,7 @@ wxMenuItem* wxMenu::DoAppend(wxMenuItem *item)
     if ( check )
     {
         // check the item initially
-        item->Check(TRUE);
+        item->Check(true);
     }
 
     return item;
@@ -354,15 +325,16 @@ wxMenuItem *wxMenu::DoRemove(wxMenuItem *item)
 
 void wxMenu::SetTitle(const wxString& label)
 {
-       m_title = label ;
+    m_title = label ;
     UMASetMenuTitle(MAC_WXHMENU(m_hMenu) , label , wxFont::GetDefaultEncoding() ) ;
 }
+
 bool wxMenu::ProcessCommand(wxCommandEvent & event)
 {
-    bool processed = FALSE;
+    bool processed = false;
 
     // Try the menu's event handler
-    if ( !processed && GetEventHandler())
+    if ( /* !processed && */ GetEventHandler())
     {
         processed = GetEventHandler()->ProcessEvent(event);
     }
@@ -464,7 +436,7 @@ void wxMenu::MacBeforeDisplay( bool isSubMenu )
                 ( UMAGetSystemVersion() >= 0x1000 && (
                     item->GetId() == wxApp::s_macPreferencesMenuItemId ||
                     item->GetId() == wxApp::s_macExitMenuItemId ) ) )
-                 
+
             {
                 ChangeMenuItemAttributes( MAC_WXHMENU( GetHMenu() ),
                                           pos + 1, kMenuItemAttrHidden, 0 );
@@ -567,6 +539,8 @@ auto-merge for MDI in case this will be necessary
 
 wxMenuBar* wxMenuBar::s_macInstalledMenuBar = NULL ;
 wxMenuBar* wxMenuBar::s_macCommonMenuBar = NULL ;
+bool     wxMenuBar::s_macAutoWindowMenu = true ;
+WXHMENU  wxMenuBar::s_macWindowMenuHandle = NULL ;
 
 void wxMenuBar::Init()
 {
@@ -652,7 +626,7 @@ void wxMenuBar::MacInstallMenuBar()
 
     // clean-up the help menu before adding new items
     static MenuHandle mh = NULL ;
-    
+
     if ( mh != NULL )
     {
         MenuItemIndex firstUserHelpMenuItem ;
@@ -666,7 +640,7 @@ void wxMenuBar::MacInstallMenuBar()
         else
         {
             mh = NULL ;
-        }  
+        }
     }
 #if TARGET_CARBON
     if ( UMAGetSystemVersion() >= 0x1000 && wxApp::s_macPreferencesMenuItemId)
@@ -723,7 +697,7 @@ void wxMenuBar::MacInstallMenuBar()
                             {
                                 mh = NULL ;
                                 break ;
-                            }  
+                            }
                         }
                     }
                     if ( item->IsSeparator() )
@@ -775,6 +749,14 @@ void wxMenuBar::MacInstallMenuBar()
             UMASetMenuItemShortcut( GetMenuHandle( kwxMacAppleMenuId ) , 1 , entry ) ;
         }
     }
+    if ( GetAutoWindowMenu() )
+    {
+        if ( MacGetWindowMenuHMenu() == NULL )
+        {
+            CreateStandardWindowMenu( 0 , (MenuHandle*) &s_macWindowMenuHandle ) ;
+        }
+        InsertMenu( (MenuHandle) MacGetWindowMenuHMenu() , 0 ) ;
+    }
     ::DrawMenuBar() ;
     s_macInstalledMenuBar = this;
 }
@@ -850,7 +832,7 @@ wxMenu *wxMenuBar::Replace(size_t pos, wxMenu *menu, const wxString& title)
 {
     wxMenu *menuOld = wxMenuBarBase::Replace(pos, menu, title);
     if ( !menuOld )
-        return FALSE;
+        return false;
     m_titles[pos] = title;
 
     if ( IsAttached() )
@@ -884,7 +866,7 @@ wxMenu *wxMenuBar::Replace(size_t pos, wxMenu *menu, const wxString& title)
 bool wxMenuBar::Insert(size_t pos, wxMenu *menu, const wxString& title)
 {
     if ( !wxMenuBarBase::Insert(pos, menu, title) )
-        return FALSE;
+        return false;
 
     m_titles.Insert(title, pos);
 
@@ -909,7 +891,7 @@ bool wxMenuBar::Insert(size_t pos, wxMenu *menu, const wxString& title)
     if (m_invokingWindow)
         wxMenubarSetInvokingWindow( menu, m_invokingWindow );
 
-    return TRUE;
+    return true;
 }
 
 wxMenu *wxMenuBar::Remove(size_t pos)
@@ -936,10 +918,10 @@ wxMenu *wxMenuBar::Remove(size_t pos)
 bool wxMenuBar::Append(wxMenu *menu, const wxString& title)
 {
     WXHMENU submenu = menu ? menu->GetHMenu() : 0;
-    wxCHECK_MSG( submenu, FALSE, wxT("can't append invalid menu to menubar") );
+    wxCHECK_MSG( submenu, false, wxT("can't append invalid menu to menubar") );
 
     if ( !wxMenuBarBase::Append(menu, title) )
-        return FALSE;
+        return false;
 
     m_titles.Add(title);
 
@@ -961,7 +943,7 @@ bool wxMenuBar::Append(wxMenu *menu, const wxString& title)
     if (m_invokingWindow)
         wxMenubarSetInvokingWindow( menu, m_invokingWindow );
 
-    return TRUE;
+    return true;
 }
 
 static void wxMenubarUnsetInvokingWindow( wxMenu *menu )