X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/289532452089421ddadbd4726a8469511a19ab76..f5f0774124e3a56f6fb0b1472a4c54e69c6e19c0:/src/common/framecmn.cpp diff --git a/src/common/framecmn.cpp b/src/common/framecmn.cpp index 8f3d81c6e4..3e40e5db20 100644 --- a/src/common/framecmn.cpp +++ b/src/common/framecmn.cpp @@ -33,6 +33,9 @@ #include "wx/statusbr.h" #endif // WX_PRECOMP +extern WXDLLEXPORT_DATA(const char) wxFrameNameStr[] = "frame"; +extern WXDLLEXPORT_DATA(const char) wxStatusLineNameStr[] = "status_line"; + // ---------------------------------------------------------------------------- // event table // ---------------------------------------------------------------------------- @@ -239,11 +242,7 @@ wxPoint wxFrameBase::GetClientAreaOrigin() const bool wxFrameBase::ProcessCommand(int id) { - wxMenuBar *bar = GetMenuBar(); - if ( !bar ) - return false; - - wxMenuItem *item = bar->FindItem(id); + wxMenuItem* const item = FindItemInMenuBar(id); if ( !item ) return false; @@ -252,8 +251,7 @@ bool wxFrameBase::ProcessCommand(int id) bool wxFrameBase::ProcessCommand(wxMenuItem *item) { - wxCommandEvent commandEvent(wxEVT_COMMAND_MENU_SELECTED, item->GetId()); - commandEvent.SetEventObject(this); + wxCHECK_MSG( item, false, wxS("Menu item can't be NULL") ); if (!item->IsEnabled()) return true; @@ -261,15 +259,23 @@ bool wxFrameBase::ProcessCommand(wxMenuItem *item) if ((item->GetKind() == wxITEM_RADIO) && item->IsChecked() ) return true; + int checked; if (item->IsCheckable()) { item->Toggle(); // use the new value - commandEvent.SetInt(item->IsChecked()); + checked = item->IsChecked(); } + else // Uncheckable item. + { + checked = -1; + } + + wxMenu* const menu = item->GetMenu(); + wxCHECK_MSG( menu, false, wxS("Menu item should be attached to a menu") ); - return HandleWindowEvent(commandEvent); + return menu->SendEvent(item->GetId(), checked); } #endif // wxUSE_MENUS