X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/3b3dc8019a520ce5e166c8ae9098ba020f8b3f94..cc4d5638c66a409e421420ed7110917755a66788:/src/motif/menuitem.cpp diff --git a/src/motif/menuitem.cpp b/src/motif/menuitem.cpp index 08bf34a5ff..afd2d75675 100644 --- a/src/motif/menuitem.cpp +++ b/src/motif/menuitem.cpp @@ -4,7 +4,6 @@ // Author: Julian Smart // Modified by: // Created: 17/09/98 -// RCS-ID: $Id$ // Copyright: (c) Julian Smart // Licence: wxWindows licence /////////////////////////////////////////////////////////////////////////////// @@ -21,6 +20,7 @@ #include "wx/wxprec.h" #include "wx/menuitem.h" +#include "wx/stockitem.h" #ifndef WX_PRECOMP #include "wx/utils.h" @@ -62,8 +62,6 @@ static void wxMenuItemDisarmCallback(Widget w, XtPointer clientData, XtPointer p // dynamic classes implementation // ---------------------------------------------------------------------------- -IMPLEMENT_DYNAMIC_CLASS(wxMenuItem, wxObject) - // ---------------------------------------------------------------------------- // wxMenuItem // ---------------------------------------------------------------------------- @@ -135,12 +133,6 @@ void wxMenuItem::Check(bool bDoCheck) } } -/* static */ -wxString wxMenuItemBase::GetLabelFromText(const wxString& text) -{ - return wxStripMenuCodes(text); -} - // ---------------------------------------------------------------------------- // wxMenuItemBase // ---------------------------------------------------------------------------- @@ -172,9 +164,17 @@ void wxMenuItem::CreateItem (WXWidget menu, wxMenuBar * menuBar, (wxStripMenuCodes(m_text), xmLabelGadgetClass, (Widget) menu, NULL); } - else if (!m_text.empty() && !m_subMenu) + else if (!IsSeparator() && !m_subMenu) { - wxString strName = wxStripMenuCodes(m_text); + wxString txt = m_text; + + if (m_text.IsEmpty()) + { + wxASSERT_MSG(wxIsStockID(GetId()), wxT("A non-stock menu item with an empty label?")); + txt = wxGetStockLabel(GetId(), wxSTOCK_WITH_ACCELERATOR|wxSTOCK_WITH_MNEMONIC); + } + + wxString strName = wxStripMenuCodes(txt); if (IsCheckable()) { m_buttonWidget = (WXWidget) XtVaCreateManagedWidget (strName, @@ -230,7 +230,7 @@ void wxMenuItem::CreateItem (WXWidget menu, wxMenuBar * menuBar, (XtCallbackProc) wxMenuItemDisarmCallback, (XtPointer) this); } - else if (GetId() == wxID_SEPARATOR) + else if (IsSeparator()) { m_buttonWidget = (WXWidget) XtVaCreateManagedWidget ("separator", xmSeparatorGadgetClass, (Widget) menu, @@ -275,7 +275,7 @@ void wxMenuItem::DestroyItem(bool full) wxMenuItemDisarmCallback, (XtPointer) this); } } - else if (GetId() == wxID_SEPARATOR) + else if (IsSeparator()) { ; // Nothing @@ -299,7 +299,7 @@ void wxMenuItem::DestroyItem(bool full) } } -void wxMenuItem::SetText(const wxString& label) +void wxMenuItem::SetItemLabel(const wxString& label) { char mnem = wxFindMnemonic (label); wxString label2 = wxStripMenuCodes(label); @@ -337,7 +337,7 @@ void wxMenuItemCallback (Widget WXUNUSED(w), XtPointer clientData, wxMenuItem *item = (wxMenuItem *) clientData; if (item) { - wxCommandEvent event(wxEVT_COMMAND_MENU_SELECTED, item->GetId()); + wxCommandEvent event(wxEVT_MENU, item->GetId()); event.SetInt( item->GetId() ); if (item->IsCheckable()) @@ -357,7 +357,7 @@ void wxMenuItemCallback (Widget WXUNUSED(w), XtPointer clientData, event.SetEventObject(item->GetMenuBar()->GetMenuBarFrame()); item->GetMenuBar()->GetMenuBarFrame() - ->GetEventHandler()->ProcessEvent(event); + ->HandleWindowEvent(event); } // this is the child of a popup menu else if (item->GetTopMenu()) @@ -389,7 +389,7 @@ void wxMenuItemArmCallback (Widget WXUNUSED(w), XtPointer clientData, menuEvent.SetEventObject(item->GetMenuBar()->GetMenuBarFrame()); item->GetMenuBar()->GetMenuBarFrame() - ->GetEventHandler()->ProcessEvent(menuEvent); + ->HandleWindowEvent(menuEvent); } } } @@ -409,7 +409,7 @@ wxMenuItemDisarmCallback (Widget WXUNUSED(w), XtPointer clientData, menuEvent.SetEventObject(item->GetMenuBar()->GetMenuBarFrame()); item->GetMenuBar()->GetMenuBarFrame() - ->GetEventHandler()->ProcessEvent(menuEvent); + ->HandleWindowEvent(menuEvent); } } }