]> git.saurik.com Git - wxWidgets.git/blobdiff - src/os2/menuitem.cpp
DMC fix.
[wxWidgets.git] / src / os2 / menuitem.cpp
index 6c912fc3e6e39f049634b635cda23dab3d21da3d..d5417f8a0daacb40afc4053d3e69f14848c37429 100644 (file)
     #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
 // ============================================================================
@@ -123,18 +81,20 @@ wxMenuItem::wxMenuItem(
 )
 : 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
@@ -149,13 +109,13 @@ 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
@@ -236,7 +196,7 @@ wxString wxMenuItemBase::GetLabelFromText(
         {
             //
             // '~' is the escape character for OS/2PM and '&' is the one for
-            // wxWindows - skip both of them
+            // wxWidgets - skip both of them
             //
             continue;
         }
@@ -415,12 +375,15 @@ void wxMenuItem::SetText(
     // 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);