Undo "Forward events to active child at MSW, not wx, level in wxMDIParentFrame."

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
This commit is contained in:
Vadim Zeitlin
2013-06-23 13:07:55 +00:00
parent 1d3fe8f83e
commit dcb16c298b
2 changed files with 17 additions and 13 deletions

View File

@@ -110,6 +110,9 @@ public:
#endif // wxUSE_MENUS #endif // wxUSE_MENUS
protected: protected:
// override to pass menu/toolbar events to the active child first
virtual bool TryBefore(wxEvent& event);
#if wxUSE_MENUS_NATIVE #if wxUSE_MENUS_NATIVE
virtual void InternalSetMenuBar(); virtual void InternalSetMenuBar();
#endif // wxUSE_MENUS_NATIVE #endif // wxUSE_MENUS_NATIVE

View File

@@ -577,19 +577,6 @@ WXLRESULT wxMDIParentFrame::MSWWindowProc(WXUINT message,
MSWDefWindowProc(message, wParam, lParam); MSWDefWindowProc(message, wParam, lParam);
processed = true; 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);
}
}
} }
break; break;
@@ -708,6 +695,20 @@ void wxMDIParentFrame::OnMDICommand(wxCommandEvent& event)
#endif // wxUSE_MENUS #endif // wxUSE_MENUS
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, WXLRESULT wxMDIParentFrame::MSWDefWindowProc(WXUINT message,
WXWPARAM wParam, WXWPARAM wParam,
WXLPARAM lParam) WXLPARAM lParam)