X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/fd04970ab45eb2f392af48b71aa9ecd5d4b1c8c2..e88df737fbcc00e04903275de9492c84f170ebb5:/src/mac/carbon/menu.cpp diff --git a/src/mac/carbon/menu.cpp b/src/mac/carbon/menu.cpp index 8cb5011042..891f908d64 100644 --- a/src/mac/carbon/menu.cpp +++ b/src/mac/carbon/menu.cpp @@ -9,11 +9,6 @@ // Licence: wxWindows licence ///////////////////////////////////////////////////////////////////////////// -#if defined(__GNUG__) && !defined(NO_GCC_PRAGMA) -#pragma implementation "menu.h" -#pragma implementation "menuitem.h" -#endif - // ============================================================================ // headers & declarations // ============================================================================ @@ -49,34 +44,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 +79,6 @@ void wxRemoveMacMenuAssociation(wxMenu *menu) } } } -#endif // deprecated wxList // ============================================================================ // implementation @@ -135,15 +101,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 +124,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 +216,7 @@ bool wxMenu::DoInsertOrAppend(wxMenuItem *pItem, size_t pos) { GetMenuBar()->Refresh(); } - return TRUE ; + return true ; } void wxMenu::EndRadioGroup() @@ -263,7 +229,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 +245,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 +276,7 @@ wxMenuItem* wxMenu::DoAppend(wxMenuItem *item) if ( check ) { // check the item initially - item->Check(TRUE); + item->Check(true); } return item; @@ -354,15 +320,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 +431,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 +534,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 +621,7 @@ void wxMenuBar::MacInstallMenuBar() // clean-up the help menu before adding new items static MenuHandle mh = NULL ; - + if ( mh != NULL ) { MenuItemIndex firstUserHelpMenuItem ; @@ -666,7 +635,7 @@ void wxMenuBar::MacInstallMenuBar() else { mh = NULL ; - } + } } #if TARGET_CARBON if ( UMAGetSystemVersion() >= 0x1000 && wxApp::s_macPreferencesMenuItemId) @@ -723,7 +692,7 @@ void wxMenuBar::MacInstallMenuBar() { mh = NULL ; break ; - } + } } } if ( item->IsSeparator() ) @@ -775,6 +744,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 +827,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 +861,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 +886,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 +913,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 +938,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 )