]> git.saurik.com Git - wxWidgets.git/commitdiff
Forward events to active child in wxMDIParentFrameBase, not only wxMSW.
authorVadim Zeitlin <vadim@wxwidgets.org>
Sat, 29 Jun 2013 12:53:44 +0000 (12:53 +0000)
committerVadim Zeitlin <vadim@wxwidgets.org>
Sat, 29 Jun 2013 12:53:44 +0000 (12:53 +0000)
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

include/wx/mdi.h
include/wx/msw/mdi.h
src/msw/mdi.cpp

index 19a8832fb643b8672f00c1e51653370c5e0c3d78..78c2f4c3e47c65f37a05dc153684dd0dcfe38310 100644 (file)
@@ -123,6 +123,10 @@ public:
     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
@@ -369,6 +373,21 @@ inline wxMDIClientWindow *wxMDIParentFrameBase::OnCreateClient()
     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_
index caf235fd56a68ec7578df102d48bf70b0cdef00d..afef0664a4b7567c071aac1622a11a7da612c141 100644 (file)
@@ -110,9 +110,6 @@ public:
 #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
index e78625d9f079120425cc8fc7344b2a1a2cde5f16..309002bb01d46b464ee98c41839c9452cb9e32bf 100644 (file)
@@ -698,21 +698,6 @@ void wxMDIParentFrame::OnMDICommand(wxCommandEvent& event)
 
 #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 ||
-            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)