X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/294ea16de3359844cb884baad219b40ea04fac48..2296fe5018d42d4e0bf9df07c37d31f60d972b32:/src/os2/menu.cpp diff --git a/src/os2/menu.cpp b/src/os2/menu.cpp index 59307fbdc3..0d64df1bfd 100644 --- a/src/os2/menu.cpp +++ b/src/os2/menu.cpp @@ -95,7 +95,7 @@ void wxMenu::Init() ,NULL )) == 0) { - wxLogLastError("WinLoadMenu"); + wxLogLastError(wxT("WinLoadMenu")); } m_vMenuData.iPosition = 0; m_vMenuData.afStyle = MIS_SUBMENU | MIS_TEXT; @@ -107,7 +107,7 @@ void wxMenu::Init() // // If we have a title, insert it in the beginning of the menu // - if (!m_title.IsEmpty()) + if (!m_title.empty()) { Append( idMenuTitle ,m_title @@ -131,7 +131,7 @@ wxMenu::~wxMenu() { if (!::WinDestroyWindow((HWND)GetHmenu()) ) { - wxLogLastError("WinDestroyWindow"); + wxLogLastError(wxT("WinDestroyWindow")); } } @@ -146,7 +146,7 @@ wxMenu::~wxMenu() void wxMenu::Break() { // this will take effect during the next call to Append() - m_bDoBreak = TRUE; + m_bDoBreak = true; } // end of wxMenu::Break void wxMenu::Attach( @@ -189,6 +189,18 @@ void wxMenu::UpdateAccel( } else if (!pItem->IsSeparator()) { + // + // Recurse upwards: we should only modify m_accels of the top level + // menus, not of the submenus as wxMenuBar doesn't look at them + // (alternative and arguable cleaner solution would be to recurse + // downwards in GetAccelCount() and CopyAccels()) + // + if (GetParent()) + { + GetParent()->UpdateAccel(pItem); + return; + } + // // Find the (new) accel for this item // @@ -236,17 +248,15 @@ void wxMenu::UpdateAccel( // // Append a new item or submenu to the menu // -bool wxMenu::DoInsertOrAppend( - wxMenuItem* pItem -, size_t nPos -) +bool wxMenu::DoInsertOrAppend( wxMenuItem* pItem, + size_t nPos ) { - wxMenu* pSubmenu = pItem->GetSubMenu(); - MENUITEM& rItem = (pSubmenu != NULL)?pSubmenu->m_vMenuData: - pItem->m_vMenuData; + wxMenu* pSubmenu = pItem->GetSubMenu(); + MENUITEM& rItem = (pSubmenu != NULL)?pSubmenu->m_vMenuData: + pItem->m_vMenuData; - ERRORID vError; - wxString sError; + ERRORID vError; + wxString sError; #if wxUSE_ACCEL UpdateAccel(pItem); @@ -277,7 +287,7 @@ bool wxMenu::DoInsertOrAppend( } else { - rItem.id = pItem->GetId(); + rItem.id = (USHORT)pItem->GetId(); } BYTE* pData=NULL; @@ -325,7 +335,7 @@ bool wxMenu::DoInsertOrAppend( } else { - rItem.iPosition = nPos; + rItem.iPosition = (SHORT)nPos; } APIRET rc; @@ -349,26 +359,25 @@ bool wxMenu::DoInsertOrAppend( ); } #endif + if (rc == (APIRET)MIT_MEMERROR || rc == (APIRET)MIT_ERROR) { vError = ::WinGetLastError(vHabmain); sError = wxPMErrorToStr(vError); - wxLogError("Error inserting or appending a menuitem. Error: %s\n", sError.c_str()); - wxLogLastError("Insert or AppendMenu"); - return FALSE; + wxLogError(wxT("Error inserting or appending a menuitem. Error: %s\n"), sError.c_str()); + wxLogLastError(wxT("Insert or AppendMenu")); + return false; } - else + + // + // If we're already attached to the menubar, we must update it + // + if (IsAttached() && GetMenuBar()->IsAttached()) { - // - // If we're already attached to the menubar, we must update it - // - if (IsAttached() && GetMenuBar()->IsAttached()) - { - GetMenuBar()->Refresh(); - } - return TRUE; + GetMenuBar()->Refresh(); } - return FALSE; + + return true; } // end of wxMenu::DoInsertOrAppend void wxMenu::EndRadioGroup() @@ -379,13 +388,11 @@ void wxMenu::EndRadioGroup() m_nStartRadioGroup = -1; } // end of wxMenu::EndRadioGroup -wxMenuItem* wxMenu::DoAppend( - wxMenuItem* pItem -) +wxMenuItem* wxMenu::DoAppend( wxMenuItem* pItem ) { wxCHECK_MSG( pItem, NULL, _T("NULL item in wxMenu::DoAppend") ); - bool bCheck = FALSE; + bool bCheck = false; if (pItem->GetKind() == wxITEM_RADIO) { @@ -407,7 +414,7 @@ wxMenuItem* wxMenu::DoAppend( // // Ensure that we have a checked item in the radio group // - bCheck = TRUE; + bCheck = true; } else // extend the current radio group { @@ -442,7 +449,7 @@ wxMenuItem* wxMenu::DoAppend( // // Check the item initially // - pItem->Check(TRUE); + pItem->Check(true); } return pItem; } // end of wxMenu::DoAppend @@ -548,27 +555,25 @@ size_t wxMenu::CopyAccels( // set wxMenu title // --------------------------------------------------------------------------- -void wxMenu::SetTitle( - const wxString& rLabel -) +void wxMenu::SetTitle( const wxString& rLabel ) { - bool bHasNoTitle = m_title.IsEmpty(); - HWND hMenu = GetHmenu(); + bool bHasNoTitle = m_title.empty(); + HWND hMenu = GetHmenu(); m_title = rLabel; if (bHasNoTitle) { - if (!rLabel.IsEmpty()) + if (!rLabel.empty()) { - if (!::WinSetWindowText(hMenu, rLabel.c_str())) + if (!::WinSetWindowText(hMenu, (PSZ)rLabel.c_str())) { - wxLogLastError("SetMenuTitle"); + wxLogLastError(wxT("SetMenuTitle")); } } } else { - if (rLabel.IsEmpty() ) + if (rLabel.empty() ) { ::WinSendMsg( GetHmenu() ,MM_REMOVEITEM @@ -581,9 +586,9 @@ void wxMenu::SetTitle( // // Modify the title // - if (!::WinSetWindowText(hMenu, rLabel.c_str())) + if (!::WinSetWindowText(hMenu, (PSZ)rLabel.c_str())) { - wxLogLastError("SetMenuTitle"); + wxLogLastError(wxT("SetMenuTitle")); } } } @@ -769,18 +774,18 @@ WXHMENU wxMenuBar::Create() ,NULL )) == 0) { - wxLogLastError("WinLoadMenu"); + wxLogLastError(wxT("WinLoadMenu")); } else { - size_t nCount = GetMenuCount(), i; - wxMenuList::iterator it; + size_t nCount = GetMenuCount(), i; + wxMenuList::iterator it; for (i = 0, it = m_menus.begin(); i < nCount; i++, it++) { - APIRET rc; - ERRORID vError; - wxString sError; - HWND hSubMenu; + APIRET rc; + ERRORID vError; + wxString sError; + HWND hSubMenu; // // Set the parent and owner of the submenues to be the menubar, not the desktop @@ -790,7 +795,7 @@ WXHMENU wxMenuBar::Create() { vError = ::WinGetLastError(vHabmain); sError = wxPMErrorToStr(vError); - wxLogError("Error setting parent for submenu. Error: %s\n", sError.c_str()); + wxLogError(wxT("Error setting parent for submenu. Error: %s\n"), sError.c_str()); return NULLHANDLE; } @@ -798,18 +803,18 @@ WXHMENU wxMenuBar::Create() { vError = ::WinGetLastError(vHabmain); sError = wxPMErrorToStr(vError); - wxLogError("Error setting parent for submenu. Error: %s\n", sError.c_str()); + wxLogError(wxT("Error setting parent for submenu. Error: %s\n"), sError.c_str()); return NULLHANDLE; } - (*it)->m_vMenuData.iPosition = i; + (*it)->m_vMenuData.iPosition = (SHORT)i; rc = (APIRET)::WinSendMsg(m_hMenu, MM_INSERTITEM, (MPARAM)&(*it)->m_vMenuData, (MPARAM)m_titles[i].c_str()); if (rc == (APIRET)MIT_MEMERROR || rc == (APIRET)MIT_ERROR) { vError = ::WinGetLastError(vHabmain); sError = wxPMErrorToStr(vError); - wxLogError("Error inserting or appending a menuitem. Error: %s\n", sError.c_str()); + wxLogError(wxT("Error inserting or appending a menuitem. Error: %s\n"), sError.c_str()); return NULLHANDLE; } } @@ -840,7 +845,7 @@ void wxMenuBar::EnableTop( nId = SHORT1FROMMR(::WinSendMsg((HWND)m_hMenu, MM_ITEMIDFROMPOSITION, MPFROMSHORT(nPos), (MPARAM)0)); if (nId == MIT_ERROR) { - wxLogLastError("LogLastError"); + wxLogLastError(wxT("LogLastError")); return; } ::WinSendMsg((HWND)m_hMenu, MM_SETITEMATTR, MPFROM2SHORT(nId, TRUE), MPFROM2SHORT(MIA_DISABLED, uFlag)); @@ -866,7 +871,7 @@ void wxMenuBar::SetLabelTop( nId = SHORT1FROMMR(::WinSendMsg((HWND)m_hMenu, MM_ITEMIDFROMPOSITION, MPFROMSHORT(nPos), (MPARAM)0)); if (nId == MIT_ERROR) { - wxLogLastError("LogLastError"); + wxLogLastError(wxT("LogLastError")); return; } if(!::WinSendMsg( (HWND)m_hMenu @@ -875,13 +880,13 @@ void wxMenuBar::SetLabelTop( ,MPARAM(&vItem) )) { - wxLogLastError("QueryItem"); + wxLogLastError(wxT("QueryItem")); } nId = vItem.id; if (::WinSendMsg(GetHmenu(), MM_SETITEMTEXT, MPFROMSHORT(nId), (MPARAM)rLabel.c_str())); { - wxLogLastError("ModifyMenu"); + wxLogLastError(wxT("ModifyMenu")); } Refresh(); } // end of wxMenuBar::SetLabelTop @@ -916,7 +921,7 @@ wxMenu* wxMenuBar::Replace( nId = SHORT1FROMMR(::WinSendMsg((HWND)m_hMenu, MM_ITEMIDFROMPOSITION, MPFROMSHORT(nPos), (MPARAM)0)); if (nId == MIT_ERROR) { - wxLogLastError("LogLastError"); + wxLogLastError(wxT("LogLastError")); return NULL; } if (!pMenuOld) @@ -941,27 +946,20 @@ wxMenu* wxMenuBar::Replace( return pMenuOld; } // end of wxMenuBar::Replace -bool wxMenuBar::Insert( - size_t nPos -, wxMenu* pMenu -, const wxString& rTitle -) +bool wxMenuBar::Insert( size_t nPos, + wxMenu* pMenu, + const wxString& rTitle ) { - wxString sTitle = wxPMTextToLabel(rTitle); + wxString sTitle = wxPMTextToLabel(rTitle); - if (!wxMenuBarBase::Insert( nPos - ,pMenu - ,sTitle - )) - return FALSE; + if (!wxMenuBarBase::Insert( nPos, pMenu, sTitle )) + return false; - m_titles.Insert( sTitle - ,nPos - ); + m_titles.Insert( sTitle, nPos ); if (IsAttached()) { - pMenu->m_vMenuData.iPosition = nPos; + pMenu->m_vMenuData.iPosition = (SHORT)nPos; ::WinSendMsg( (HWND)m_hMenu ,MM_INSERTITEM ,(MPARAM)&pMenu->m_vMenuData @@ -976,7 +974,8 @@ bool wxMenuBar::Insert( #endif // wxUSE_ACCEL Refresh(); } - return TRUE; + + return true; } // end of wxMenuBar::Insert bool wxMenuBar::Append( @@ -1030,7 +1029,7 @@ wxMenu* wxMenuBar::Remove( ); if (nId == MIT_ERROR) { - wxLogLastError("LogLastError"); + wxLogLastError(wxT("LogLastError")); return NULL; } if (IsAttached()) @@ -1105,7 +1104,7 @@ void wxMenuBar::Attach( ,m_vAccelTable.GetHACCEL() ,(HWND)pFrame->GetFrame() )) - wxLogLastError("WinSetAccelTable"); + wxLogLastError(wxT("WinSetAccelTable")); #endif // wxUSE_ACCEL } // end of wxMenuBar::Attach @@ -1182,4 +1181,3 @@ wxMenuItem* wxMenuBar::FindItem( } return pItem; } // end of wxMenuBar::FindItem -