X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/c9667cda38388d1f82f805d6d8cdcdca4a1ae877..7330bb53dcadb06b7459f9fc99fd2e13e389db0a:/src/os2/menu.cpp diff --git a/src/os2/menu.cpp b/src/os2/menu.cpp index c63cfe2fea..dff498d244 100644 --- a/src/os2/menu.cpp +++ b/src/os2/menu.cpp @@ -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; } }