]> git.saurik.com Git - wxWidgets.git/blobdiff - src/common/menucmn.cpp
Make code reading BMP files more robust.
[wxWidgets.git] / src / common / menucmn.cpp
index 55daa81c38e5c041e688f56f640f9abb2e52d5fa..dacfbf4d90a9ba68d7b2b8c42df8a7d08c676845 100644 (file)
@@ -643,7 +643,8 @@ bool wxMenuBase::SendEvent(int itemid, int checked)
     event.SetEventObject(this);
     event.SetInt(checked);
 
-    wxWindow * const win = GetWindow();
+    wxWindow* const win = GetWindow();
+    wxMenuBar* const mb = GetMenuBar();
 
     // Try the menu's event handler first
     wxEvtHandler *handler = GetEventHandler();
@@ -653,16 +654,21 @@ bool wxMenuBase::SendEvent(int itemid, int checked)
         // event to another handler if it's not processed here to prevent it
         // from passing the event to wxTheApp: this will be done below if we do
         // have the associated window.
-        if ( win )
+        if ( win || mb )
             event.SetWillBeProcessedAgain();
 
         if ( handler->SafelyProcessEvent(event) )
             return true;
     }
 
-    // Try the window the menu was popped up from or its menu bar belongs to
-    if ( win && win->HandleWindowEvent(event) )
-        return true;
+    // If this menu is part of the menu bar, process the event there: this will
+    // also propagate it upwards to the window containing the menu bar.
+    if ( mb )
+        return mb->HandleWindowEvent(event);
+
+    // Try the window the menu was popped up from.
+    if ( win )
+        return win->HandleWindowEvent(event);
 
     // Not processed.
     return false;
@@ -919,6 +925,7 @@ void wxMenuBarBase::Attach(wxFrame *frame)
 {
     wxASSERT_MSG( !IsAttached(), wxT("menubar already attached!") );
 
+    SetParent(frame);
     m_menuBarFrame = frame;
 }
 
@@ -927,6 +934,7 @@ void wxMenuBarBase::Detach()
     wxASSERT_MSG( IsAttached(), wxT("detaching unattached menubar") );
 
     m_menuBarFrame = NULL;
+    SetParent(NULL);
 }
 
 // ----------------------------------------------------------------------------