Menu, toolbar and update UI events should be forwarded to the active child
under all platforms in MDI applications and not only MSW, so move TryBefore()
overload from wxMSW wxMDIParentFrame to wxMDIParentFrameBase.
This should make things more consistent in general and notably fixes the lack
of toolbar events in wxDocChildFrame since the changes of r73928.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@74314
c3d73ce0-8a6f-49c7-b76d-
6d57e0e08775
virtual wxMDIClientWindow *OnCreateClient();
protected:
virtual wxMDIClientWindow *OnCreateClient();
protected:
+ // Override to pass menu/toolbar events to the active child first.
+ virtual bool TryBefore(wxEvent& event);
+
+
// This is wxMDIClientWindow for all the native implementations but not for
// the generic MDI version which has its own wxGenericMDIClientWindow and
// so we store it as just a base class pointer because we don't need its
// This is wxMDIClientWindow for all the native implementations but not for
// the generic MDI version which has its own wxGenericMDIClientWindow and
// so we store it as just a base class pointer because we don't need its
return new wxMDIClientWindow;
}
return new wxMDIClientWindow;
}
+inline bool wxMDIParentFrameBase::TryBefore(wxEvent& event)
+{
+ // Menu (and toolbar) events should be sent to the active child frame
+ // first, if any.
+ if ( event.GetEventType() == wxEVT_MENU ||
+ event.GetEventType() == wxEVT_UPDATE_UI )
+ {
+ wxMDIChildFrame * const child = GetActiveChild();
+ if ( child && child->ProcessWindowEventLocally(event) )
+ return true;
+ }
+
+ return wxFrame::TryBefore(event);
+}
+
#endif // wxUSE_MDI
#endif // _WX_MDI_H_BASE_
#endif // wxUSE_MDI
#endif // _WX_MDI_H_BASE_
#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
-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 ||
- event.GetEventType() == wxEVT_UPDATE_UI )
- {
- 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)