X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/3a7c125370cf6fd2b66eb06ba031efcfd5c5b9b0..27e6d746496f5a44c1fb062afc8f3f0f296808e6:/src/os2/menuitem.cpp diff --git a/src/os2/menuitem.cpp b/src/os2/menuitem.cpp index 87bac21267..9a0ed81340 100644 --- a/src/os2/menuitem.cpp +++ b/src/os2/menuitem.cpp @@ -1,5 +1,5 @@ /////////////////////////////////////////////////////////////////////////////// -// Name: menuitem.cpp +// Name: src/os2/menuitem.cpp // Purpose: wxMenuItem implementation // Author: David Webster // Modified by: @@ -13,27 +13,23 @@ // headers & declarations // ============================================================================ -#ifdef __GNUG__ - #pragma implementation "menuitem.h" -#endif - // For compilers that support precompilation, includes "wx.h". #include "wx/wxprec.h" +#include "wx/menuitem.h" +#include "wx/stockitem.h" + #ifndef WX_PRECOMP #include "wx/font.h" #include "wx/bitmap.h" #include "wx/settings.h" - #include "wx/font.h" #include "wx/window.h" #include "wx/accel.h" #include "wx/menu.h" #include "wx/string.h" + #include "wx/log.h" #endif -#include "wx/menuitem.h" -#include "wx/log.h" - #if wxUSE_ACCEL #include "wx/accel.h" #endif // wxUSE_ACCEL @@ -175,13 +171,13 @@ int wxMenuItem::GetRealId() const // -------------- bool wxMenuItem::IsChecked() const { - USHORT uFlag = SHORT1FROMMR(::WinSendMsg( GetHMenuOf(m_parentMenu) - ,MM_QUERYITEMATTR - ,MPFROM2SHORT(GetId(), TRUE) - ,MPFROMSHORT(MIA_CHECKED) - )); + USHORT uFlag = SHORT1FROMMR(::WinSendMsg( GetHMenuOf(m_parentMenu) + ,MM_QUERYITEMATTR + ,MPFROM2SHORT(GetId(), TRUE) + ,MPFROMSHORT(MIA_CHECKED) + )); - return (uFlag & MIA_CHECKED); + return (uFlag & MIA_CHECKED) == MIA_CHECKED ; } // end of wxMenuItem::IsChecked wxString wxMenuItemBase::GetLabelFromText( @@ -190,13 +186,13 @@ wxString wxMenuItemBase::GetLabelFromText( { wxString sLabel; - for (const char* zPc = rsText.c_str(); *zPc; zPc++) + for (const wxChar* zPc = rsText.c_str(); *zPc; zPc++) { if (*zPc == wxT('~') || *zPc == wxT('&')) { // // '~' is the escape character for OS/2PM and '&' is the one for - // wxWindows - skip both of them + // wxWidgets - skip both of them // continue; } @@ -211,7 +207,7 @@ wxString wxMenuItemBase::GetLabelFromText( // void wxMenuItem::SetAsRadioGroupStart() { - m_bIsRadioGroupStart = TRUE; + m_bIsRadioGroupStart = true; } // end of wxMenuItem::SetAsRadioGroupStart void wxMenuItem::SetRadioGroupStart( @@ -260,7 +256,7 @@ void wxMenuItem::Enable( ); if (!bOk) { - wxLogLastError("EnableMenuItem"); + wxLogLastError(wxT("EnableMenuItem")); } wxMenuItemBase::Enable(bEnable); } // end of wxMenuItem::Enable @@ -321,9 +317,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) { @@ -335,14 +331,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 @@ -362,14 +358,12 @@ void wxMenuItem::Check( } if (!bOk) { - wxLogLastError("CheckMenuItem"); + wxLogLastError(wxT("CheckMenuItem")); } wxMenuItemBase::Check(bCheck); } // end of wxMenuItem::Check -void wxMenuItem::SetText( - const wxString& rText -) +void wxMenuItem::SetText( const wxString& rText ) { // // Don't do anything if label didn't change @@ -379,10 +373,18 @@ void wxMenuItem::SetText( if (m_text == sText) return; + // wxMenuItemBase will do stock ID checks wxMenuItemBase::SetText(sText); - OWNER_DRAWN_ONLY(wxOwnerDrawn::SetName(sText)); + + // m_text could now be different from 'text' if we are a stock menu item, + // so use only m_text below + + OWNER_DRAWN_ONLY(wxOwnerDrawn::SetName(m_text)); #if wxUSE_OWNER_DRAWN - SetAccelString(rText.AfterFirst(_T('\t'))); + if (rText.IsEmpty()) + SetAccelString(m_text.AfterFirst(_T('\t'))); + else + SetAccelString(rText.AfterFirst(_T('\t'))); #endif // wxUSE_OWNER_DRAWN HWND hMenu = GetHmenuOf(m_parentMenu); @@ -393,9 +395,9 @@ void wxMenuItem::SetText( m_parentMenu->UpdateAccel(this); #endif // wxUSE_ACCEL - USHORT uId = GetRealId(); - MENUITEM vItem; - USHORT uFlagsOld; + USHORT uId = (USHORT)GetRealId(); + MENUITEM vItem; + USHORT uFlagsOld; if (!::WinSendMsg( hMenu ,MM_QUERYITEM @@ -403,7 +405,7 @@ void wxMenuItem::SetText( ,(MPARAM)&vItem )) { - wxLogLastError("GetMenuState"); + wxLogLastError(wxT("GetMenuState")); } else { @@ -425,7 +427,7 @@ void wxMenuItem::SetText( #endif //owner drawn { uFlagsOld |= MIS_TEXT; - pData = (BYTE*)sText.c_str(); + pData = (BYTE*)m_text.c_str(); } // @@ -483,4 +485,3 @@ wxMenuItem* wxMenuItemBase::New( ,pSubMenu ); } // end of wxMenuItemBase::New -