diff --git a/include/wx/os2/accel.h b/include/wx/os2/accel.h index f12542fd52..0f842eeac2 100644 --- a/include/wx/os2/accel.h +++ b/include/wx/os2/accel.h @@ -63,5 +63,6 @@ public: WXDLLEXPORT_DATA(extern wxAcceleratorTable) wxNullAcceleratorTable; +WXDLLEXPORT wxString wxPMTextToLabel(const wxString& rsTitle); #endif // _WX_ACCEL_H_ diff --git a/src/os2/accel.cpp b/src/os2/accel.cpp index 662e2c63f0..e21a611fe0 100644 --- a/src/os2/accel.cpp +++ b/src/os2/accel.cpp @@ -210,3 +210,45 @@ bool wxAcceleratorTable::Translate( return (Ok() && rc); } // end of wxAcceleratorTable::Translate +// --------------------------------------------------------------------------- +// function for translating labels +// --------------------------------------------------------------------------- + +wxString wxPMTextToLabel( + 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 wxPMTextToLabel + diff --git a/src/os2/menu.cpp b/src/os2/menu.cpp index dff498d244..09b8119900 100644 --- a/src/os2/menu.cpp +++ b/src/os2/menu.cpp @@ -61,47 +61,6 @@ USHORT wxMenu::m_nextMenuId = 0; IMPLEMENT_DYNAMIC_CLASS(wxMenu, wxEvtHandler) IMPLEMENT_DYNAMIC_CLASS(wxMenuBar, wxEvtHandler) -// ---------------------------------------------------------------------------- -// 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 // ============================================================================ @@ -304,16 +263,10 @@ bool wxMenu::DoInsertOrAppend( m_bDoBreak = FALSE; } - if (pItem->IsSeparator()) - { - rItem.afStyle |= MIS_SEPARATOR; - } - // // Id is the numeric id for normal menu items and HMENU for submenus as // required by ::MM_INSERTITEM message API // - if (pSubmenu != NULL) { wxASSERT_MSG(pSubmenu->GetHMenu(), wxT("invalid submenu")); @@ -344,8 +297,13 @@ bool wxMenu::DoInsertOrAppend( pItem->m_vMenuData.afStyle = rItem.afStyle; pItem->m_vMenuData.hItem = rItem.hItem; } - else if (!pItem->IsSeparator()) + else #endif + if (pItem->IsSeparator()) + { + rItem.afStyle = MIS_SEPARATOR; + } + else { // // Menu is just a normal string (passed in data parameter) @@ -942,7 +900,7 @@ wxMenu* wxMenuBar::Replace( ) { SHORT nId; - wxString sTitle = TextToLabel(rTitle); + wxString sTitle = wxPMTextToLabel(rTitle); wxMenu* pMenuOld = wxMenuBarBase::Replace( nPos ,pMenu ,sTitle @@ -983,7 +941,7 @@ bool wxMenuBar::Insert( , const wxString& rTitle ) { - wxString sTitle = TextToLabel(rTitle); + wxString sTitle = wxPMTextToLabel(rTitle); if (!wxMenuBarBase::Insert( nPos ,pMenu @@ -1024,7 +982,7 @@ bool wxMenuBar::Append( wxCHECK_MSG(hSubmenu, FALSE, wxT("can't append invalid menu to menubar")); - wxString sTitle = TextToLabel(rsTitle); + wxString sTitle = wxPMTextToLabel(rsTitle); if (!wxMenuBarBase::Append(pMenu, sTitle)) return FALSE; diff --git a/src/os2/menuitem.cpp b/src/os2/menuitem.cpp index 91c6e9d975..87bac21267 100644 --- a/src/os2/menuitem.cpp +++ b/src/os2/menuitem.cpp @@ -54,48 +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& 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,13 +81,13 @@ 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 @@ -151,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 @@ -417,7 +375,7 @@ 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;