#define OWNER_DRAWN_ONLY( code )
#endif // wxUSE_OWNER_DRAWN/!wxUSE_OWNER_DRAWN
-// ----------------------------------------------------------------------------
-// static function for translating menu labels
-// ----------------------------------------------------------------------------
-
-static wxString TextToLabel(
- const wxString& rsTitle
-)
-{
- wxString sTitle;
- const wxChar* zPc;
-
- if (rsTitle.IsEmpty())
- return(sTitle);
-
- for (zPc = rsTitle.c_str(); *zPc != wxT('\0'); zPc++)
- {
- if (*zPc == wxT('&'))
- {
- if (*(zPc + 1) == wxT('&'))
- {
- zPc++;
- sTitle << wxT('&');
- }
- else
- sTitle << wxT('~');
- }
- else
- {
- if ( *zPc == wxT('~'))
- {
- //
- // Tildes must be doubled to prevent them from being
- // interpreted as accelerator character prefix by PM ???
- //
- sTitle << *zPc;
- }
- sTitle << *zPc;
- }
- }
- return(sTitle);
-} // end of TextToLabel
-
// ============================================================================
// implementation
// ============================================================================
)
: wxMenuItemBase( pParentMenu
,nId
- ,TextToLabel(rsText)
+ ,wxPMTextToLabel(rsText)
,rsHelp
,eKind
,pSubMenu
)
#if wxUSE_OWNER_DRAWN
-, wxOwnerDrawn( TextToLabel(rsText)
+, wxOwnerDrawn( wxPMTextToLabel(rsText)
,eKind == wxITEM_CHECK
)
#endif // owner drawn
{
wxASSERT_MSG(pParentMenu != NULL, wxT("a menu item should have a parent"));
+ memset(&m_vMenuData, '\0', sizeof(m_vMenuData));
+ m_vMenuData.id = (USHORT)nId;
Init();
} // end of wxMenuItem::wxMenuItem
)
: wxMenuItemBase( pParentMenu
,nId
- ,TextToLabel(rsText)
+ ,wxPMTextToLabel(rsText)
,rsHelp
,bIsCheckable ? wxITEM_CHECK : wxITEM_NORMAL
,pSubMenu
)
#if wxUSE_OWNER_DRAWN
-, wxOwnerDrawn( TextToLabel(rsText)
+, wxOwnerDrawn( wxPMTextToLabel(rsText)
,bIsCheckable
)
#endif // owner drawn
{
//
// '~' is the escape character for OS/2PM and '&' is the one for
- // wxWindows - skip both of them
+ // wxWidgets - skip both of them
//
continue;
}
//
// Also uncheck all the other items in this radio group
//
- wxMenuItemList::Node* pNode = rItems.Item(nStart);
+ wxMenuItemList::compatibility_iterator node = rItems.Item(nStart);
- for (int n = nStart; n <= nEnd && pNode; n++)
+ for (int n = nStart; n <= nEnd && node; n++)
{
if (n == nPos)
{
}
if (n != nPos)
{
- pNode->GetData()->m_isChecked = FALSE;
+ node->GetData()->m_isChecked = FALSE;
::WinSendMsg( hMenu
,MM_SETITEMATTR
,MPFROM2SHORT(n, TRUE)
,MPFROM2SHORT(MIA_CHECKED, FALSE)
);
}
- pNode = pNode->GetNext();
+ node = node->GetNext();
}
}
else // check item
// Don't do anything if label didn't change
//
- wxString sText = TextToLabel(rText);
+ wxString sText = wxPMTextToLabel(rText);
if (m_text == sText)
return;
wxMenuItemBase::SetText(sText);
OWNER_DRAWN_ONLY(wxOwnerDrawn::SetName(sText));
+#if wxUSE_OWNER_DRAWN
+ SetAccelString(rText.AfterFirst(_T('\t')));
+#endif // wxUSE_OWNER_DRAWN
HWND hMenu = GetHmenuOf(m_parentMenu);