]> git.saurik.com Git - wxWidgets.git/commitdiff
Use wxMenu::GetWindow() instead of GetInvokingWindow() in SendEvent().
authorVadim Zeitlin <vadim@wxwidgets.org>
Sat, 24 Apr 2010 15:07:55 +0000 (15:07 +0000)
committerVadim Zeitlin <vadim@wxwidgets.org>
Sat, 24 Apr 2010 15:07:55 +0000 (15:07 +0000)
This simplifies the code as we don't need to walk the menu hierarchy upwards
any more (GetInvokingWindow() does it now) and also makes it work for all
menus, not just the popup ones.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@64126 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775

src/common/menucmn.cpp

index 74d5fd843dd779214bcf9a3b63750adab2782a6b..0d2d14bf0a78319505430224923e0a72e6ab13e3 100644 (file)
@@ -453,30 +453,17 @@ bool wxMenuBase::SendEvent(int id, int checked)
 
     bool processed = false;
 
-    // Try the menu's event handler
-    // if ( !processed )
-    {
-        wxEvtHandler *handler = GetEventHandler();
-        if ( handler )
-            processed = handler->SafelyProcessEvent(event);
-    }
+    // Try the menu's event handler first
+    wxEvtHandler *handler = GetEventHandler();
+    if ( handler )
+        processed = handler->SafelyProcessEvent(event);
 
-    // Try the window the menu was popped up from (and up through the
-    // hierarchy)
+    // Try the window the menu was popped up from or its menu bar belongs to
     if ( !processed )
     {
-        const wxMenuBase *menu = this;
-        while ( menu )
-        {
-            wxWindow *win = menu->GetInvokingWindow();
-            if ( win )
-            {
-                processed = win->HandleWindowEvent(event);
-                break;
-            }
-
-            menu = menu->GetParent();
-        }
+        wxWindow * const win = GetWindow();
+        if ( win )
+            processed = win->HandleWindowEvent(event);
     }
 
     return processed;