X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/598d8cacefaa185a962ebc39d31533410692c56b..6ce43ac97db5cab1373d2e3c158849faffa8128d:/src/os2/menuitem.cpp diff --git a/src/os2/menuitem.cpp b/src/os2/menuitem.cpp index 574fea6166..a3180a5ae8 100644 --- a/src/os2/menuitem.cpp +++ b/src/os2/menuitem.cpp @@ -54,40 +54,6 @@ #define OWNER_DRAWN_ONLY( code ) #endif // wxUSE_OWNER_DRAWN/!wxUSE_OWNER_DRAWN -// ---------------------------------------------------------------------------- -// static function for translating menu labels -// ---------------------------------------------------------------------------- - -static wxString TextToLabel(const wxString& rTitle) -{ - wxString Title; - const wxChar *pc; - for (pc = rTitle.c_str(); *pc != wxT('\0'); pc++ ) - { - if (*pc == wxT('&') ) - { - if (*(pc+1) == wxT('&')) - { - pc++; - Title << wxT('&'); - } - else - Title << wxT('~'); - } - else - { - if ( *pc == wxT('~') ) - { - // tildes must be doubled to prevent them from being - // interpreted as accelerator character prefix by PM ??? - Title << *pc; - } - Title << *pc; - } - } - return Title; -} - // ============================================================================ // implementation // ============================================================================ @@ -115,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 @@ -141,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 @@ -173,12 +141,11 @@ void wxMenuItem::Init() SetTextColour(SYS_COLOR(MENUTEXT)); SetBackgroundColour(SYS_COLOR(MENU)); - #undef SYS_COLOR - // // We don't want normal items be owner-drawn // ResetOwnerDrawn(); + #undef SYS_COLOR // // Tell the owner drawing code to to show the accel string as well @@ -218,23 +185,25 @@ bool wxMenuItem::IsChecked() const } // end of wxMenuItem::IsChecked wxString wxMenuItemBase::GetLabelFromText( - const wxString& rText + const wxString& rsText ) { - wxString label; - for ( const wxChar *pc = rText.c_str(); *pc; pc++ ) + wxString sLabel; + + for (const char* zPc = rsText.c_str(); *zPc; zPc++) { - if ( *pc == wxT('~') || *pc == wxT('&') ) + if (*zPc == wxT('~') || *zPc == wxT('&')) { - // '~' is the escape character for GTK+ and '&' is the one for - // wxWindows - skip both of them + // + // '~' is the escape character for OS/2PM and '&' is the one for + // wxWidgets - skip both of them + // continue; } - - label += *pc; + sLabel += *zPc; } - return label; -} + return sLabel; +} // end of wxMenuItemBase::GetLabelFromText // // Radio group stuff @@ -352,9 +321,9 @@ void wxMenuItem::Check( // // 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) { @@ -366,14 +335,14 @@ void wxMenuItem::Check( } 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 @@ -406,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);