X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/8caf72d33efedf5252ffeb5177441b10f3a72141..cc77c86d1e71bae248f59f83904971d83e78c1a5:/src/mac/menu.cpp diff --git a/src/mac/menu.cpp b/src/mac/menu.cpp index e53992df98..caadf18ce3 100644 --- a/src/mac/menu.cpp +++ b/src/mac/menu.cpp @@ -70,7 +70,6 @@ void wxMenu::Init() Str255 label; wxMenuItem::MacBuildMenuString( label, NULL , NULL , m_title , false ); m_macMenuId = s_macNextMenuId++; - wxCHECK_RET( s_macNextMenuId < 236 , "menu ids > 235 cannot be used for submenus on mac" ); m_hMenu = ::NewMenu(m_macMenuId, label); if ( !m_hMenu ) @@ -210,10 +209,34 @@ bool wxMenu::DoInsertOrAppend(wxMenuItem *pItem, size_t pos) if ( pos == (size_t)-1 ) { UMAAppendMenuItem(MAC_WXHMENU(m_hMenu), label,key,modifiers); + if ( pItem->GetBitmap().Ok() ) + { + ControlButtonContentInfo info ; + wxMacCreateBitmapButton( &info , pItem->GetBitmap() , true ) ; + if ( info.contentType != kControlNoContent ) + { + if ( info.contentType == kControlContentCIconHandle ) + SetMenuItemIconHandle( MAC_WXHMENU(m_hMenu) , CountMenuItems(MAC_WXHMENU(m_hMenu) ) , + kMenuColorIconType , (Handle) info.u.cIconHandle ) ; + } + + } } else { UMAInsertMenuItem(MAC_WXHMENU(m_hMenu), label , pos,key,modifiers); + if ( pItem->GetBitmap().Ok() ) + { + ControlButtonContentInfo info ; + wxMacCreateBitmapButton( &info , pItem->GetBitmap() , true ) ; + if ( info.contentType != kControlNoContent ) + { + if ( info.contentType == kControlContentCIconHandle ) + SetMenuItemIconHandle( MAC_WXHMENU(m_hMenu) , pos , + kMenuColorIconType , (Handle) info.u.cIconHandle ) ; + } + + } } if ( pItem->GetId() == idMenuTitle ) { @@ -577,7 +600,7 @@ wxMenuBar::~wxMenuBar() } -void wxMenuBar::Refresh() +void wxMenuBar::Refresh(bool WXUNUSED(eraseBackground), const wxRect *WXUNUSED(rect)) { wxCHECK_RET( IsAttached(), wxT("can't refresh unatteched menubar") ); @@ -614,33 +637,37 @@ void wxMenuBar::RebuildAccelTable() #endif // wxUSE_ACCEL - void wxMenuBar::MacInstallMenuBar() { - if ( s_macInstalledMenuBar == this ) - return ; + if ( s_macInstalledMenuBar == this ) + return ; + + wxStAppResource resload ; - Handle menubar = ::GetNewMBar( kwxMacMenuBarResource ) ; - wxString message ; - wxCHECK_RET( menubar != NULL, "can't read MBAR resource" ); - ::SetMenuBar( menubar ) ; + Handle menubar = ::GetNewMBar( kwxMacMenuBarResource ) ; + wxString message ; + wxCHECK_RET( menubar != NULL, "can't read MBAR resource" ); + ::SetMenuBar( menubar ) ; #if TARGET_API_MAC_CARBON ::DisposeMenuBar( menubar ) ; #else - ::DisposeHandle( menubar ) ; + ::DisposeHandle( menubar ) ; #endif - MenuHandle menu = ::GetMenuHandle( kwxMacAppleMenuId ) ; #if TARGET_API_MAC_OS8 - ::AppendResMenu(menu, 'DRVR'); + MenuHandle menu = ::GetMenuHandle( kwxMacAppleMenuId ) ; + if ( CountMenuItems( menu ) == 2 ) + { + ::AppendResMenu(menu, 'DRVR'); + } #endif - for (int i = 0; i < m_menus.GetCount(); i++) + for (size_t i = 0; i < m_menus.GetCount(); i++) { - Str255 label; - wxNode *node; - wxMenuItem *item; - int pos ; + Str255 label; + wxNode *node; + wxMenuItem *item; + int pos ; wxMenu* menu = m_menus[i] , *subMenu = NULL ; if( m_titles[i] == "?" || m_titles[i] == "&?" || m_titles[i] == wxApp::s_macHelpMenuTitleName ) @@ -713,7 +740,7 @@ void wxMenuBar::MacInstallMenuBar() } } ::InsertMenu(MAC_WXHMENU(m_menus[i]->GetHMenu()), 0); - for ( int i = 0 ; i < submenus.GetCount() ; ++i ) + for ( size_t i = 0 ; i < submenus.GetCount() ; ++i ) { wxMenu* submenu = (wxMenu*) submenus[i] ; wxNode *subnode; @@ -733,7 +760,6 @@ void wxMenuBar::MacInstallMenuBar() } } ::DrawMenuBar() ; - s_macInstalledMenuBar = this; } @@ -888,7 +914,7 @@ void wxMenuBar::MacMenuSelect(wxEvtHandler* handler, long when , int macMenuId, } else { - for (int i = 0; i < m_menus.GetCount() ; i++) + for (size_t i = 0; i < m_menus.GetCount() ; i++) { if ( m_menus[i]->MacGetMenuId() == macMenuId || ( macMenuId == kHMHelpMenuID && ( m_titles[i] == "?" || m_titles[i] == "&?" || m_titles[i] == wxApp::s_macHelpMenuTitleName ) ) ) { @@ -902,7 +928,7 @@ void wxMenuBar::MacMenuSelect(wxEvtHandler* handler, long when , int macMenuId, } } - for (int i = 0; i < m_menus.GetCount(); i++) + for (size_t i = 0; i < m_menus.GetCount(); i++) { if ( m_menus[i]->MacMenuSelect( handler , when , macMenuId , macMenuItemNum ) ) {