X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/0edeeb6d96d31d342a6a283d2a9b625a1d0a7b96..c1099d92544fb97cb230248e50cf0c81a2633cdd:/src/msw/menu.cpp diff --git a/src/msw/menu.cpp b/src/msw/menu.cpp index a6956295e2..8cae440b7b 100644 --- a/src/msw/menu.cpp +++ b/src/msw/menu.cpp @@ -29,7 +29,6 @@ #include "wx/menu.h" #ifndef WX_PRECOMP - #include "wx/msw/wrapcctl.h" // include "properly" #include "wx/frame.h" #include "wx/utils.h" #include "wx/intl.h" @@ -41,6 +40,7 @@ #endif #include "wx/msw/private.h" +#include "wx/msw/wrapcctl.h" // include "properly" #ifdef __WXWINCE__ #include @@ -97,7 +97,7 @@ typedef struct tagMENUINFO // ---------------------------------------------------------------------------- // the (popup) menu title has this special id -static const int idMenuTitle = -3; +static const UINT idMenuTitle = (UINT)-3; // ---------------------------------------------------------------------------- // private functions @@ -372,7 +372,8 @@ bool wxMenu::DoInsertOrAppend(wxMenuItem *pItem, size_t pos) UpdateAccel(pItem); #endif // wxUSE_ACCEL - UINT flags = 0; + // we should support disabling the item even prior to adding it to the menu + UINT flags = pItem->IsEnabled() ? MF_ENABLED : MF_GRAYED; // if "Break" has just been called, insert a menu break before this item // (and don't forget to reset the flag) @@ -387,19 +388,19 @@ bool wxMenu::DoInsertOrAppend(wxMenuItem *pItem, size_t pos) // id is the numeric id for normal menu items and HMENU for submenus as // required by ::AppendMenu() API - UINT id; + UINT_PTR id; wxMenu *submenu = pItem->GetSubMenu(); if ( submenu != NULL ) { wxASSERT_MSG( submenu->GetHMenu(), wxT("invalid submenu") ); submenu->SetParent(this); - id = (UINT)submenu->GetHMenu(); + id = (UINT_PTR)submenu->GetHMenu(); flags |= MF_POPUP; } else { - id = pItem->GetId(); + id = pItem->GetMSWId(); } @@ -468,7 +469,7 @@ bool wxMenu::DoInsertOrAppend(wxMenuItem *pItem, size_t pos) } mii.cch = itemText.length(); - mii.dwTypeData = wx_const_cast(wxChar *, itemText.wx_str()); + mii.dwTypeData = const_cast(itemText.wx_str()); if (flags & MF_POPUP) { @@ -488,7 +489,7 @@ bool wxMenu::DoInsertOrAppend(wxMenuItem *pItem, size_t pos) // item and this looks downright ugly // // so instead draw it ourselves in MSWOnDrawItem() - mii.dwItemData = wx_reinterpret_cast(ULONG_PTR, pItem); + mii.dwItemData = reinterpret_cast(pItem); if ( pItem->IsCheckable() ) { mii.hbmpChecked = @@ -564,7 +565,7 @@ bool wxMenu::DoInsertOrAppend(wxMenuItem *pItem, size_t pos) // if we just appended the title, highlight it - if ( (int)id == idMenuTitle ) + if ( id == idMenuTitle ) { // visually select the menu title SetDefaultMenuItem(GetHmenu(), id); @@ -731,7 +732,7 @@ void wxMenu::SetTitle(const wxString& label) if ( !label.empty() ) { if ( !::InsertMenu(hMenu, 0u, MF_BYPOSITION | MF_STRING, - (unsigned)idMenuTitle, m_title.wx_str()) || + idMenuTitle, m_title.wx_str()) || !::InsertMenu(hMenu, 1u, MF_BYPOSITION, (unsigned)-1, NULL) ) { wxLogLastError(wxT("InsertMenu")); @@ -759,7 +760,7 @@ void wxMenu::SetTitle(const wxString& label) info.fMask = MIIM_TYPE; info.fType = MFT_STRING; info.cch = m_title.length(); - info.dwTypeData = wx_const_cast(wxChar *, m_title.wx_str()); + info.dwTypeData = const_cast(m_title.wx_str()); if ( !SetMenuItemInfo(hMenu, 0, TRUE, & info) ) { wxLogLastError(wxT("SetMenuItemInfo")); @@ -767,7 +768,7 @@ void wxMenu::SetTitle(const wxString& label) #else if ( !ModifyMenu(hMenu, 0u, MF_BYPOSITION | MF_STRING, - (unsigned)idMenuTitle, m_title.wx_str()) ) + idMenuTitle, m_title.wx_str()) ) { wxLogLastError(wxT("ModifyMenu")); } @@ -779,7 +780,7 @@ void wxMenu::SetTitle(const wxString& label) // put the title string in bold face if ( !m_title.empty() ) { - SetDefaultMenuItem(GetHmenu(), (UINT)idMenuTitle); + SetDefaultMenuItem(GetHmenu(), idMenuTitle); } #endif // Win32 } @@ -793,7 +794,7 @@ bool wxMenu::MSWCommand(WXUINT WXUNUSED(param), WXWORD id_) const int id = (signed short)id_; // ignore commands from the menu title - if ( id != idMenuTitle ) + if ( id != (int)idMenuTitle ) { // update the check item when it's clicked wxMenuItem * const item = FindItem(id); @@ -929,7 +930,7 @@ WXHMENU wxMenuBar::Create() if ( m_hMenu != 0 ) return m_hMenu; - wxToolMenuBar * const bar = wx_static_cast(wxToolMenuBar *, GetToolBar()); + wxToolMenuBar * const bar = static_cast(GetToolBar()); if ( !bar ) return NULL; @@ -980,7 +981,7 @@ WXHMENU wxMenuBar::Create() for ( i = 0, it = m_menus.begin(); i < count; i++, it++ ) { if ( !::AppendMenu((HMENU)m_hMenu, MF_POPUP | MF_STRING, - (UINT)(*it)->GetHMenu(), + (UINT_PTR)(*it)->GetHMenu(), m_titles[i].wx_str()) ) { wxLogLastError(wxT("AppendMenu")); @@ -1052,7 +1053,7 @@ void wxMenuBar::SetMenuLabel(size_t pos, const wxString& label) int mswpos = MSWPositionForWxMenu(GetMenu(pos),pos); - UINT id; + UINT_PTR id; UINT flagsOld = ::GetMenuState((HMENU)m_hMenu, mswpos, MF_BYPOSITION); if ( flagsOld == 0xFFFFFFFF ) { @@ -1065,7 +1066,7 @@ void wxMenuBar::SetMenuLabel(size_t pos, const wxString& label) { // HIBYTE contains the number of items in the submenu in this case flagsOld &= 0xff; - id = (UINT)::GetSubMenu((HMENU)m_hMenu, mswpos); + id = (UINT_PTR)::GetSubMenu((HMENU)m_hMenu, mswpos); } else { @@ -1079,8 +1080,8 @@ void wxMenuBar::SetMenuLabel(size_t pos, const wxString& label) info.fMask = MIIM_TYPE; info.fType = MFT_STRING; info.cch = label.length(); - info.dwTypeData = wx_const_cast(wxChar *, label.wx_str()); - if ( !SetMenuItemInfo(GetHmenu(), id, TRUE, & info) ) + info.dwTypeData = const_cast(label.wx_str()); + if ( !SetMenuItemInfo(GetHmenu(), id, TRUE, &info) ) { wxLogLastError(wxT("SetMenuItemInfo")); } @@ -1132,7 +1133,7 @@ wxMenu *wxMenuBar::Replace(size_t pos, wxMenu *menu, const wxString& title) if ( !::InsertMenu(GetHmenu(), (UINT)mswpos, MF_BYPOSITION | MF_POPUP | MF_STRING, - (UINT)GetHmenuOf(menu), title.wx_str()) ) + (UINT_PTR)GetHmenuOf(menu), title.wx_str()) ) { wxLogLastError(wxT("InsertMenu")); } @@ -1199,7 +1200,7 @@ bool wxMenuBar::Insert(size_t pos, wxMenu *menu, const wxString& title) #else if ( !::InsertMenu(GetHmenu(), mswpos, MF_BYPOSITION | MF_POPUP | MF_STRING, - (UINT)GetHmenuOf(menu), title.wx_str()) ) + (UINT_PTR)GetHmenuOf(menu), title.wx_str()) ) { wxLogLastError(wxT("InsertMenu")); } @@ -1258,7 +1259,7 @@ bool wxMenuBar::Append(wxMenu *menu, const wxString& title) } #else if ( !::AppendMenu(GetHmenu(), MF_POPUP | MF_STRING, - (UINT)submenu, title.wx_str()) ) + (UINT_PTR)submenu, title.wx_str()) ) { wxLogLastError(wxT("AppendMenu")); } @@ -1346,7 +1347,7 @@ void wxMenuBar::RebuildAccelTable() nAccelCount += (*it)->CopyAccels(&accelEntries[nAccelCount]); } - m_accelTable = wxAcceleratorTable(nAccelCount, accelEntries); + SetAcceleratorTable(wxAcceleratorTable(nAccelCount, accelEntries)); delete [] accelEntries; }