added method for getting the help menu on classic and carbon

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@12899 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Stefan Csomor
2001-12-07 05:35:57 +00:00
parent 56a38bbe87
commit b03e4fcd11
4 changed files with 98 additions and 126 deletions

View File

@@ -42,7 +42,7 @@ IMPLEMENT_DYNAMIC_CLASS(wxMenuBar, wxEvtHandler)
// the (popup) menu title has this special id
static const int idMenuTitle = -2;
static int formerHelpMenuItems = 0 ;
static MenuItemIndex firstUserHelpMenuItem = 0 ;
const short kwxMacMenuBarResource = 1 ;
const short kwxMacAppleMenuId = 1 ;
@@ -453,7 +453,7 @@ bool wxMenu::MacMenuSelect( wxEvtHandler* handler, long when , int macMenuId, in
#ifndef __DARWIN__
else if ( macMenuId == kHMHelpMenuID )
{
int menuItem = formerHelpMenuItems ;
int menuItem = firstUserHelpMenuItem-1 ;
for (pos = 0, node = GetMenuItems().First(); node; node = node->Next(), pos++)
{
wxMenuItem * pItem = (wxMenuItem *) node->Data() ;
@@ -639,20 +639,13 @@ void wxMenuBar::MacInstallMenuBar()
int pos ;
wxMenu* menu = m_menus[i] , *subMenu = NULL ;
#if !TARGET_CARBON
/* the help menu does not exist in CARBON anymore */
if( m_titles[i] == "?" || m_titles[i] == "&?" || m_titles[i] == wxApp::s_macHelpMenuTitleName )
{
MenuHandle mh = NULL ;
if ( HMGetHelpMenuHandle( &mh ) != noErr )
{
continue ;
}
if ( formerHelpMenuItems == 0 )
{
if( mh )
formerHelpMenuItems = CountMenuItems( mh ) ;
}
if ( UMAGetHelpMenu( &mh , &firstUserHelpMenuItem) != noErr )
{
continue ;
}
for (pos = 0 , node = menu->GetMenuItems().First(); node; node = node->Next(), pos++)
{
@@ -695,55 +688,6 @@ void wxMenuBar::MacInstallMenuBar()
}
}
}
#else
if( m_titles[i] == "?" || m_titles[i] == "&?" || m_titles[i] == wxApp::s_macHelpMenuTitleName )
{
wxMenuItem::MacBuildMenuString( label, NULL , NULL , m_titles[i] , false );
UMASetMenuTitle( menu->GetHMenu() , label ) ;
wxArrayPtrVoid submenus ;
for (pos = 0 , node = menu->GetMenuItems().First(); node; node = node->Next(), pos++)
{
item = (wxMenuItem *)node->Data();
subMenu = item->GetSubMenu() ;
if (subMenu)
{
submenus.Add(subMenu) ;
}
else
{
if ( item->GetId() == wxApp::s_macAboutMenuItemId )
{
Str255 label ;
UInt8 modifiers ;
SInt16 key ;
wxMenuItem::MacBuildMenuString( label, &key , &modifiers , item->GetText(), item->GetId() != wxApp::s_macAboutMenuItemId); // no shortcut in about menu
::SetMenuItemText( GetMenuHandle( kwxMacAppleMenuId ) , 1 , label );
UMAEnableMenuItem( GetMenuHandle( kwxMacAppleMenuId ) , 1 );
}
}
}
::InsertMenu(m_menus[i]->GetHMenu(), 0);
for ( int i = 0 ; i < submenus.GetCount() ; ++i )
{
wxMenu* submenu = (wxMenu*) submenus[i] ;
wxNode *subnode;
wxMenuItem *subitem;
int subpos ;
for ( subpos = 0 , subnode = submenu->GetMenuItems().First(); subnode; subnode = subnode->Next(), subpos++)
{
subitem = (wxMenuItem *)subnode->Data();
wxMenu* itsSubMenu = subitem->GetSubMenu() ;
if (itsSubMenu)
{
submenus.Add(itsSubMenu) ;
}
}
::InsertMenu( submenu->GetHMenu() , -1 ) ;
}
}
#endif
else
{
wxMenuItem::MacBuildMenuString( label, NULL , NULL , m_titles[i] , false );