X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/1ec46a5b35233f3c69c5b73e4b0b36f44c650633..2b65eb68b852ee023101f2ed621e0679dfb80306:/src/os2/menu.cpp diff --git a/src/os2/menu.cpp b/src/os2/menu.cpp index e307253b91..a964e5497a 100644 --- a/src/os2/menu.cpp +++ b/src/os2/menu.cpp @@ -73,7 +73,7 @@ static wxString TextToLabel(const wxString& rTitle) { wxString Title; const wxChar *pc; - for (pc = rTitle; *pc != wxT('\0'); pc++ ) + for (pc = rTitle.c_str(); *pc != wxT('\0'); pc++ ) { if (*pc == wxT('&') ) { @@ -85,10 +85,6 @@ static wxString TextToLabel(const wxString& rTitle) else Title << wxT('~'); } -// else if (*pc == wxT('/')) -// { -// Title << wxT('\\'); -// } else { if ( *pc == wxT('~') ) @@ -244,7 +240,7 @@ void wxMenu::UpdateAccel( if (pAccel) m_vAccels[n] = pAccel; else - m_vAccels.Remove(n); + m_vAccels.RemoveAt(n); } if (IsAttached()) @@ -448,7 +444,7 @@ wxMenuItem* wxMenu::DoRemove( if (n != wxNOT_FOUND) { delete m_vAccels[n]; - m_vAccels.Remove(n); + m_vAccels.RemoveAt(n); } #endif // wxUSE_ACCEL @@ -559,73 +555,21 @@ bool wxMenu::OS2Command( if (vId != (WXWORD)idMenuTitle) { - wxCommandEvent vEvent(wxEVT_COMMAND_MENU_SELECTED); - - vEvent.SetEventObject(this); - vEvent.SetId(vId); - vEvent.SetInt(vId); - ProcessCommand(vEvent); + SendEvent( vId + ,(int)::WinSendMsg( GetHmenu() + ,MM_QUERYITEMATTR + ,(MPARAM)vId + ,(MPARAM)MIA_CHECKED + ) + ); } return TRUE; } // end of wxMenu::OS2Command -bool wxMenu::ProcessCommand( - wxCommandEvent& rEvent -) -{ - bool bProcessed = FALSE; - -#if wxUSE_MENU_CALLBACK - // - // Try a callback - // - if (m_callback) - { - (void)(*(m_callback))(*this, rEvent); - bProcessed = TRUE; - } -#endif // wxUSE_MENU_CALLBACK - - // - // Try the menu's event handler - // - if (!bProcessed && GetEventHandler()) - { - bProcessed = GetEventHandler()->ProcessEvent(rEvent); - } - - // - // Try the window the menu was popped up from (and up through the - // hierarchy) - wxWindow* pWin = GetInvokingWindow(); - - if (!bProcessed && pWin) - bProcessed = pWin->GetEventHandler()->ProcessEvent(rEvent); - return bProcessed; -} // end of wxMenu::ProcessCommand - // --------------------------------------------------------------------------- // other // --------------------------------------------------------------------------- -void wxMenu::Attach( - wxMenuBar* pMenubar -) -{ - // - // Menu can be in at most one menubar because otherwise they would both - // delete the menu pointer - // - wxASSERT_MSG(!m_menuBar, wxT("menu belongs to 2 menubars, expect a crash")); - m_menuBar = pMenubar; -} // end of - -void wxMenu::Detach() -{ - wxASSERT_MSG( m_menuBar, wxT("can't detach menu if it's not attached") ); - m_menuBar = NULL; -} // end of wxMenu::Detach - wxWindow* wxMenu::GetWindow() const { if (m_invokingWindow != NULL) @@ -661,7 +605,12 @@ wxMenuItem* wxMenu::FindItem( } else if ( pItem->IsSubMenu() ) { - pItem = pItem->GetSubMenu()->FindItem(nItemId, hItem, ppItemMenu); + pItem = pItem->GetSubMenu()->FindItem( nItemId + ,hItem + ,ppItemMenu + ); + if (pItem) + break; } else { @@ -981,7 +930,6 @@ bool wxMenuBar::Append( if (!wxMenuBarBase::Append(pMenu, Title)) return FALSE; - pMenu->Attach(this); m_titles.Add(Title); if ( IsAttached() ) @@ -1021,7 +969,6 @@ wxMenu* wxMenuBar::Remove( if (IsAttached()) { ::WinSendMsg((HWND)GetHmenu(), MM_REMOVEITEM, MPFROM2SHORT(nId, TRUE), (MPARAM)0); - pMenu->Detach(); #if wxUSE_ACCEL if (pMenu->HasAccels())