Unfortunately, forwarding MSW messages only takes care of the menu events but
not the toolbar ones -- which should be handled in the same way but were not.
So restore the old behaviour, the problem with menu items disabled in the
parent frame but enabled in the child one will be fixed differently.
This reverts r73927.
See #14314.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@74274
c3d73ce0-8a6f-49c7-b76d-
6d57e0e08775
#endif // wxUSE_MENUS
protected:
#endif // wxUSE_MENUS
protected:
+ // override to pass menu/toolbar events to the active child first
+ virtual bool TryBefore(wxEvent& event);
+
#if wxUSE_MENUS_NATIVE
virtual void InternalSetMenuBar();
#endif // wxUSE_MENUS_NATIVE
#if wxUSE_MENUS_NATIVE
virtual void InternalSetMenuBar();
#endif // wxUSE_MENUS_NATIVE
MSWDefWindowProc(message, wParam, lParam);
processed = true;
}
MSWDefWindowProc(message, wParam, lParam);
processed = true;
}
- else // Not a system command.
- {
- // Menu (and toolbar) events should be sent to the active
- // child first and only be processed by the parent frame if
- // they're not handled there.
- if ( wxMDIChildFrame* child = GetActiveChild() )
- {
- processed = child->MSWHandleMessage(&rc,
- message,
- wParam,
- lParam);
- }
- }
+bool wxMDIParentFrame::TryBefore(wxEvent& event)
+{
+ // menu (and toolbar) events should be sent to the active child frame
+ // first, if any
+ if ( event.GetEventType() == wxEVT_MENU )
+ {
+ wxMDIChildFrame * const child = GetActiveChild();
+ if ( child && child->ProcessWindowEventLocally(event) )
+ return true;
+ }
+
+ return wxMDIParentFrameBase::TryBefore(event);
+}
+
WXLRESULT wxMDIParentFrame::MSWDefWindowProc(WXUINT message,
WXWPARAM wParam,
WXLPARAM lParam)
WXLRESULT wxMDIParentFrame::MSWDefWindowProc(WXUINT message,
WXWPARAM wParam,
WXLPARAM lParam)