]> git.saurik.com Git - wxWidgets.git/blobdiff - src/os2/menuitem.cpp
there is no need to convert wxArrayString to wxString[] explicitly any more, wx contr...
[wxWidgets.git] / src / os2 / menuitem.cpp
index 66d1077dbca2f4c2025bf47c0a6d8db7ff4163be..9a0ed8134035ec6d9c425efa62ab0ed600842539 100644 (file)
@@ -1,39 +1,35 @@
 ///////////////////////////////////////////////////////////////////////////////
 ///////////////////////////////////////////////////////////////////////////////
-// Name:        menuitem.cpp
+// Name:        src/os2/menuitem.cpp
 // Purpose:     wxMenuItem implementation
 // Author:      David Webster
 // Modified by:
 // Created:     10/10/98
 // RCS-ID:      $Id$
 // Copyright:   (c) David Webster
 // Purpose:     wxMenuItem implementation
 // Author:      David Webster
 // Modified by:
 // Created:     10/10/98
 // RCS-ID:      $Id$
 // Copyright:   (c) David Webster
-// Licence:     wxWidgets licence
+// Licence:     wxWindows licence
 ///////////////////////////////////////////////////////////////////////////////
 
 // ============================================================================
 // headers & declarations
 // ============================================================================
 
 ///////////////////////////////////////////////////////////////////////////////
 
 // ============================================================================
 // headers & declarations
 // ============================================================================
 
-#ifdef __GNUG__
-    #pragma implementation "menuitem.h"
-#endif
-
 // For compilers that support precompilation, includes "wx.h".
 #include "wx/wxprec.h"
 
 // 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"
 #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/window.h"
     #include "wx/accel.h"
     #include "wx/menu.h"
     #include "wx/string.h"
+    #include "wx/log.h"
 #endif
 
 #endif
 
-#include "wx/menuitem.h"
-#include "wx/log.h"
-
 #if wxUSE_ACCEL
     #include "wx/accel.h"
 #endif // wxUSE_ACCEL
 #if wxUSE_ACCEL
     #include "wx/accel.h"
 #endif // wxUSE_ACCEL
@@ -175,13 +171,13 @@ int wxMenuItem::GetRealId() const
 // --------------
 bool wxMenuItem::IsChecked() 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(
 } // end of wxMenuItem::IsChecked
 
 wxString wxMenuItemBase::GetLabelFromText(
@@ -190,7 +186,7 @@ wxString wxMenuItemBase::GetLabelFromText(
 {
     wxString                        sLabel;
 
 {
     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('&'))
         {
     {
         if (*zPc == wxT('~') || *zPc == wxT('&'))
         {
@@ -211,7 +207,7 @@ wxString wxMenuItemBase::GetLabelFromText(
 //
 void wxMenuItem::SetAsRadioGroupStart()
 {
 //
 void wxMenuItem::SetAsRadioGroupStart()
 {
-    m_bIsRadioGroupStart = TRUE;
+    m_bIsRadioGroupStart = true;
 } // end of wxMenuItem::SetAsRadioGroupStart
 
 void wxMenuItem::SetRadioGroupStart(
 } // end of wxMenuItem::SetAsRadioGroupStart
 
 void wxMenuItem::SetRadioGroupStart(
@@ -260,7 +256,7 @@ void wxMenuItem::Enable(
                                 );
     if (!bOk)
     {
                                 );
     if (!bOk)
     {
-        wxLogLastError("EnableMenuItem");
+        wxLogLastError(wxT("EnableMenuItem"));
     }
     wxMenuItemBase::Enable(bEnable);
 } // end of wxMenuItem::Enable
     }
     wxMenuItemBase::Enable(bEnable);
 } // end of wxMenuItem::Enable
@@ -321,9 +317,9 @@ void wxMenuItem::Check(
         //
         // Also uncheck all the other items in this radio group
         //
         //
         // 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)
             {
         {
             if (n == nPos)
             {
@@ -335,14 +331,14 @@ void wxMenuItem::Check(
             }
             if (n != nPos)
             {
             }
             if (n != nPos)
             {
-                pNode->GetData()->m_isChecked = FALSE;
+                node->GetData()->m_isChecked = FALSE;
                 ::WinSendMsg( hMenu
                              ,MM_SETITEMATTR
                              ,MPFROM2SHORT(n, TRUE)
                              ,MPFROM2SHORT(MIA_CHECKED, FALSE)
                             );
             }
                 ::WinSendMsg( hMenu
                              ,MM_SETITEMATTR
                              ,MPFROM2SHORT(n, TRUE)
                              ,MPFROM2SHORT(MIA_CHECKED, FALSE)
                             );
             }
-            pNode = pNode->GetNext();
+            node = node->GetNext();
         }
     }
     else // check item
         }
     }
     else // check item
@@ -362,14 +358,12 @@ void wxMenuItem::Check(
     }
     if (!bOk)
     {
     }
     if (!bOk)
     {
-        wxLogLastError("CheckMenuItem");
+        wxLogLastError(wxT("CheckMenuItem"));
     }
     wxMenuItemBase::Check(bCheck);
 } // end of wxMenuItem::Check
 
     }
     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
 {
     //
     // Don't do anything if label didn't change
@@ -379,10 +373,18 @@ void wxMenuItem::SetText(
     if (m_text == sText)
         return;
 
     if (m_text == sText)
         return;
 
+    // wxMenuItemBase will do stock ID checks
     wxMenuItemBase::SetText(sText);
     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
 #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);
 #endif // wxUSE_OWNER_DRAWN
 
     HWND                            hMenu = GetHmenuOf(m_parentMenu);
@@ -393,9 +395,9 @@ void wxMenuItem::SetText(
     m_parentMenu->UpdateAccel(this);
 #endif // wxUSE_ACCEL
 
     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
 
     if (!::WinSendMsg( hMenu
                       ,MM_QUERYITEM
@@ -403,7 +405,7 @@ void wxMenuItem::SetText(
                       ,(MPARAM)&vItem
                      ))
     {
                       ,(MPARAM)&vItem
                      ))
     {
-        wxLogLastError("GetMenuState");
+        wxLogLastError(wxT("GetMenuState"));
     }
     else
     {
     }
     else
     {
@@ -425,7 +427,7 @@ void wxMenuItem::SetText(
 #endif  //owner drawn
         {
             uFlagsOld |= MIS_TEXT;
 #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
                           ,pSubMenu
                          );
 } // end of wxMenuItemBase::New
-