From 152b9fc0ebc76aa5a6491053a8f4ff4776974df5 Mon Sep 17 00:00:00 2001 From: Vadim Zeitlin Date: Sat, 4 Jun 2016 21:59:36 +0200 Subject: [PATCH] Fix sending of wxEVT_UPDATE_UI events when wxUSE_STATUSBAR==0 wxFrameBase code unintentionally excluded the function generating wxUpdateUIEvents for the menus from compilation when wxUSE_STATUSBAR was turned off. Move OnMenuOpen() out of #if wxUSE_STATUSBAR section to ensure that it's compiled whenever wxUSE_MENUS==1. Closes #17553. --- include/wx/frame.h | 2 +- src/common/framecmn.cpp | 28 +++++++++++++++------------- 2 files changed, 16 insertions(+), 14 deletions(-) diff --git a/include/wx/frame.h b/include/wx/frame.h index c1e1bcfe3d..910f8b5bf5 100644 --- a/include/wx/frame.h +++ b/include/wx/frame.h @@ -152,8 +152,8 @@ public: // event handlers #if wxUSE_MENUS -#if wxUSE_STATUSBAR void OnMenuOpen(wxMenuEvent& event); +#if wxUSE_STATUSBAR void OnMenuClose(wxMenuEvent& event); void OnMenuHighlight(wxMenuEvent& event); #endif // wxUSE_STATUSBAR diff --git a/src/common/framecmn.cpp b/src/common/framecmn.cpp index d4ad7d58dd..fee0c1bfb4 100644 --- a/src/common/framecmn.cpp +++ b/src/common/framecmn.cpp @@ -42,14 +42,14 @@ extern WXDLLEXPORT_DATA(const char) wxStatusLineNameStr[] = "status_line"; #if wxUSE_MENUS -#if wxUSE_STATUSBAR wxBEGIN_EVENT_TABLE(wxFrameBase, wxTopLevelWindow) EVT_MENU_OPEN(wxFrameBase::OnMenuOpen) +#if wxUSE_STATUSBAR EVT_MENU_CLOSE(wxFrameBase::OnMenuClose) EVT_MENU_HIGHLIGHT_ALL(wxFrameBase::OnMenuHighlight) -wxEND_EVENT_TABLE() #endif // wxUSE_STATUSBAR +wxEND_EVENT_TABLE() /* static */ bool wxFrameBase::ShouldUpdateMenuFromIdle() @@ -324,16 +324,7 @@ void wxFrameBase::UpdateWindowUI(long flags) // event handlers for status bar updates from menus // ---------------------------------------------------------------------------- -#if wxUSE_MENUS && wxUSE_STATUSBAR - -void wxFrameBase::OnMenuHighlight(wxMenuEvent& event) -{ - event.Skip(); - -#if wxUSE_STATUSBAR - (void)ShowMenuHelp(event.GetMenuId()); -#endif // wxUSE_STATUSBAR -} +#if wxUSE_MENUS void wxFrameBase::OnMenuOpen(wxMenuEvent& event) { @@ -346,6 +337,15 @@ void wxFrameBase::OnMenuOpen(wxMenuEvent& event) } } +#if wxUSE_STATUSBAR + +void wxFrameBase::OnMenuHighlight(wxMenuEvent& event) +{ + event.Skip(); + + (void)ShowMenuHelp(event.GetMenuId()); +} + void wxFrameBase::OnMenuClose(wxMenuEvent& event) { event.Skip(); @@ -353,7 +353,9 @@ void wxFrameBase::OnMenuClose(wxMenuEvent& event) DoGiveHelp(wxEmptyString, false); } -#endif // wxUSE_MENUS && wxUSE_STATUSBAR +#endif // wxUSE_STATUSBAR + +#endif // wxUSE_MENUS // Implement internal behaviour (menu updating on some platforms) void wxFrameBase::OnInternalIdle()