From 693abd284f552eaa145e2d149a794606bedbe0e5 Mon Sep 17 00:00:00 2001 From: Vadim Zeitlin Date: Fri, 5 Dec 2014 22:17:48 +0000 Subject: [PATCH] Refactor: extract menu event handling logic from wxMenu::SendEvent(). Make this logic available for reuse with the events of different kind, e.g. wxMenuEvent in the upcoming commit. git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@78228 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775 --- include/wx/menu.h | 6 ++++++ src/common/menucmn.cpp | 14 ++++++++++---- 2 files changed, 16 insertions(+), 4 deletions(-) diff --git a/include/wx/menu.h b/include/wx/menu.h index c341e5f2d1..9e980665e6 100644 --- a/include/wx/menu.h +++ b/include/wx/menu.h @@ -388,6 +388,12 @@ protected: static bool ms_locked; + +private: + // Helper of SendEvent(): sends the event to its intended recipients, + // returns true if it was processed. + static bool DoProcessEvent(wxMenuBase* menu, wxEvent& event, wxWindow* win); + wxDECLARE_NO_COPY_CLASS(wxMenuBase); }; diff --git a/src/common/menucmn.cpp b/src/common/menucmn.cpp index b9be6fa851..ca8f1f57a2 100644 --- a/src/common/menucmn.cpp +++ b/src/common/menucmn.cpp @@ -641,14 +641,20 @@ void wxMenuBase::UpdateUI(wxEvtHandler* source) bool wxMenuBase::SendEvent(int itemid, int checked) { wxCommandEvent event(wxEVT_MENU, itemid); - event.SetEventObject(this); event.SetInt(checked); - wxWindow* const win = GetWindow(); - wxMenuBar* const mb = GetMenuBar(); + return DoProcessEvent(this, event, GetWindow()); +} + +/* static */ +bool wxMenuBase::DoProcessEvent(wxMenuBase* menu, wxEvent& event, wxWindow* win) +{ + event.SetEventObject(menu); + + wxMenuBar* const mb = menu->GetMenuBar(); // Try the menu's event handler first - wxEvtHandler *handler = GetEventHandler(); + wxEvtHandler *handler = menu->GetEventHandler(); if ( handler ) { // Indicate to the event processing code that we're going to pass this