]> git.saurik.com Git - wxWidgets.git/blobdiff - src/os2/menu.cpp
compilation fix for strict(er) compilers
[wxWidgets.git] / src / os2 / menu.cpp
index c63cfe2feaa4f019ed8626063387de657d42548c..dff498d244d9357afdd7d14cc6c08617aa30dfd3 100644 (file)
@@ -52,11 +52,7 @@ static const int                    idMenuTitle = -2;
 //
 // The unique ID for Menus
 //
-#ifdef __VISAGECPP__
 USHORT                              wxMenu::m_nextMenuId = 0;
-#else
-static USHORT                       wxMenu::m_nextMenuId = 0;
-#endif
 
 // ----------------------------------------------------------------------------
 // macros
@@ -73,9 +69,11 @@ static wxString TextToLabel(
   const wxString&                   rsTitle
 )
 {
-    wxString                        sTitle;
+    wxString                        sTitle = "";
     const wxChar*                   zPc;
 
+    if (rsTitle.IsEmpty())
+        return sTitle;
     for (zPc = rsTitle.c_str(); *zPc != wxT('\0'); zPc++ )
     {
         if (*zPc == wxT('&') )
@@ -291,6 +289,7 @@ bool wxMenu::DoInsertOrAppend(
     ERRORID                         vError;
     wxString                        sError;
     char                            zMsg[128];
+
 #if wxUSE_ACCEL
     UpdateAccel(pItem);
 #endif // wxUSE_ACCEL
@@ -345,7 +344,7 @@ bool wxMenu::DoInsertOrAppend(
         pItem->m_vMenuData.afStyle = rItem.afStyle;
         pItem->m_vMenuData.hItem   = rItem.hItem;
     }
-    else
+    else if (!pItem->IsSeparator())
 #endif
     {
         //
@@ -390,7 +389,7 @@ bool wxMenu::DoInsertOrAppend(
     {
         vError = ::WinGetLastError(vHabmain);
         sError = wxPMErrorToStr(vError);
-        wxLogError("Error inserting or appending a menuitem. Error: %s\n", sError);
+        wxLogError("Error inserting or appending a menuitem. Error: %s\n", sError.c_str());
         wxLogLastError("Insert or AppendMenu");
         return FALSE;
     }
@@ -416,11 +415,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;
 
@@ -472,7 +471,7 @@ bool wxMenu::DoAppend(
 
     if (!wxMenuBase::DoAppend(pItem) || !DoInsertOrAppend(pItem))
     {
-        return FALSE;
+        return NULL;
     }
     if (bCheck)
     {
@@ -481,20 +480,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(
@@ -747,6 +748,15 @@ wxMenuBar::wxMenuBar(
 
 wxMenuBar::~wxMenuBar()
 {
+    //
+    // We should free PM's resources only if PM doesn't do it for us
+    // which happens if we're attached to a frame
+    //
+    if (m_hMenu && !IsAttached())
+    {
+        ::WinDestroyWindow((HMENU)m_hMenu);
+        m_hMenu = (WXHMENU)NULL;
+    }
 } // end of wxMenuBar::~wxMenuBar
 
 // ---------------------------------------------------------------------------
@@ -816,7 +826,7 @@ WXHMENU wxMenuBar::Create()
             {
                 vError = ::WinGetLastError(vHabmain);
                 sError = wxPMErrorToStr(vError);
-                wxLogError("Error setting parent for submenu. Error: %s\n", sError);
+                wxLogError("Error setting parent for submenu. Error: %s\n", sError.c_str());
                 return NULLHANDLE;
             }
 
@@ -824,7 +834,7 @@ WXHMENU wxMenuBar::Create()
             {
                 vError = ::WinGetLastError(vHabmain);
                 sError = wxPMErrorToStr(vError);
-                wxLogError("Error setting parent for submenu. Error: %s\n", sError);
+                wxLogError("Error setting parent for submenu. Error: %s\n", sError.c_str());
                 return NULLHANDLE;
             }
 
@@ -835,7 +845,7 @@ WXHMENU wxMenuBar::Create()
             {
                 vError = ::WinGetLastError(vHabmain);
                 sError = wxPMErrorToStr(vError);
-                wxLogError("Error inserting or appending a menuitem. Error: %s\n", sError);
+                wxLogError("Error inserting or appending a menuitem. Error: %s\n", sError.c_str());
                 return NULLHANDLE;
             }
         }