X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/e4f1a68ad1a4c145878a7595c06859d3d59fc6e7..7fa4dc1cfcc55b0fe425a3ebe5e992ff8255481b:/src/os2/menu.cpp diff --git a/src/os2/menu.cpp b/src/os2/menu.cpp index 3dbbbb16ec..a834dd5e85 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 // ============================================================================ @@ -243,7 +202,7 @@ void wxMenu::UpdateAccel( // size_t n = FindAccel(pItem->GetId()); - if (n == wxNOT_FOUND) + if (n == (size_t)wxNOT_FOUND) { // // No old, add new if any @@ -267,7 +226,7 @@ void wxMenu::UpdateAccel( if (IsAttached()) { - m_menuBar->RebuildAccelTable(); + GetMenuBar()->RebuildAccelTable(); } } } // wxMenu::UpdateAccel @@ -288,7 +247,6 @@ bool wxMenu::DoInsertOrAppend( ERRORID vError; wxString sError; - char zMsg[128]; #if wxUSE_ACCEL UpdateAccel(pItem); @@ -304,16 +262,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")); @@ -346,6 +298,11 @@ bool wxMenu::DoInsertOrAppend( } else #endif + if (pItem->IsSeparator()) + { + rItem.afStyle = MIS_SEPARATOR; + } + else { // // Menu is just a normal string (passed in data parameter) @@ -373,7 +330,6 @@ bool wxMenu::DoInsertOrAppend( #if wxUSE_OWNER_DRAWN if (pItem->IsOwnerDrawn()) { - BOOL rc; MENUITEM vMenuItem; ::WinSendMsg( GetHmenu() @@ -385,7 +341,7 @@ bool wxMenu::DoInsertOrAppend( ); } #endif - if (rc == MIT_MEMERROR || rc == MIT_ERROR) + if (rc == (APIRET)MIT_MEMERROR || rc == (APIRET)MIT_ERROR) { vError = ::WinGetLastError(vHabmain); sError = wxPMErrorToStr(vError); @@ -398,9 +354,9 @@ bool wxMenu::DoInsertOrAppend( // // If we're already attached to the menubar, we must update it // - if (IsAttached() && m_menuBar->IsAttached()) + if (IsAttached() && GetMenuBar()->IsAttached()) { - m_menuBar->Refresh(); + GetMenuBar()->Refresh(); } return TRUE; } @@ -415,11 +371,11 @@ void wxMenu::EndRadioGroup() m_nStartRadioGroup = -1; } // end of wxMenu::EndRadioGroup -bool wxMenu::DoAppend( +wxMenuItem* wxMenu::DoAppend( wxMenuItem* pItem ) { - wxCHECK_MSG( pItem, FALSE, _T("NULL item in wxMenu::DoAppend") ); + wxCHECK_MSG( pItem, NULL, _T("NULL item in wxMenu::DoAppend") ); bool bCheck = FALSE; @@ -471,7 +427,7 @@ bool wxMenu::DoAppend( if (!wxMenuBase::DoAppend(pItem) || !DoInsertOrAppend(pItem)) { - return FALSE; + return NULL; } if (bCheck) { @@ -480,20 +436,22 @@ bool wxMenu::DoAppend( // pItem->Check(TRUE); } - return TRUE; + return pItem; } // end of wxMenu::DoAppend -bool wxMenu::DoInsert( +wxMenuItem* wxMenu::DoInsert( size_t nPos , wxMenuItem* pItem ) { - return ( wxMenuBase::DoInsert( nPos - ,pItem) && + if ( wxMenuBase::DoInsert( nPos + ,pItem) && DoInsertOrAppend( pItem ,nPos - ) - ); + )) + return pItem; + else + return NULL; } // end of wxMenu::DoInsert wxMenuItem* wxMenu::DoRemove( @@ -539,12 +497,12 @@ wxMenuItem* wxMenu::DoRemove( ,MPFROM2SHORT(pItem->GetId(), TRUE) ,(MPARAM)0 ); - if (IsAttached() && m_menuBar->IsAttached()) + if (IsAttached() && GetMenuBar()->IsAttached()) { // // Otherwise, the chane won't be visible // - m_menuBar->Refresh(); + GetMenuBar()->Refresh(); } // @@ -641,7 +599,7 @@ bool wxMenu::OS2Command( SendEvent( vId ,(int)::WinSendMsg( GetHmenu() ,MM_QUERYITEMATTR - ,(MPARAM)vId + ,MPFROMSHORT(vId) ,(MPARAM)MIA_CHECKED ) ); @@ -657,8 +615,8 @@ wxWindow* wxMenu::GetWindow() const { if (m_invokingWindow != NULL) return m_invokingWindow; - else if ( m_menuBar != NULL) - return m_menuBar->GetFrame(); + else if ( GetMenuBar() != NULL) + return GetMenuBar()->GetFrame(); return NULL; } // end of wxMenu::GetWindow @@ -770,7 +728,6 @@ void wxMenuBar::Refresh() WXHMENU wxMenuBar::Create() { - MENUITEM vItem; HWND hFrame; if (m_hMenu != 0 ) @@ -839,7 +796,7 @@ WXHMENU wxMenuBar::Create() m_menus[i]->m_vMenuData.iPosition = i; rc = (APIRET)::WinSendMsg(m_hMenu, MM_INSERTITEM, (MPARAM)&m_menus[i]->m_vMenuData, (MPARAM)m_titles[i].c_str()); - if (rc == MIT_MEMERROR || rc == MIT_ERROR) + if (rc == (APIRET)MIT_MEMERROR || rc == (APIRET)MIT_ERROR) { vError = ::WinGetLastError(vHabmain); sError = wxPMErrorToStr(vError); @@ -940,7 +897,7 @@ wxMenu* wxMenuBar::Replace( ) { SHORT nId; - wxString sTitle = TextToLabel(rTitle); + wxString sTitle = wxPMTextToLabel(rTitle); wxMenu* pMenuOld = wxMenuBarBase::Replace( nPos ,pMenu ,sTitle @@ -981,7 +938,7 @@ bool wxMenuBar::Insert( , const wxString& rTitle ) { - wxString sTitle = TextToLabel(rTitle); + wxString sTitle = wxPMTextToLabel(rTitle); if (!wxMenuBarBase::Insert( nPos ,pMenu @@ -1022,7 +979,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;