]> git.saurik.com Git - wxWidgets.git/commitdiff
fixed event processing bug in tabmdi
authorBenjamin Williams <bwilliams@kirix.com>
Tue, 7 Nov 2006 12:52:02 +0000 (12:52 +0000)
committerBenjamin Williams <bwilliams@kirix.com>
Tue, 7 Nov 2006 12:52:02 +0000 (12:52 +0000)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@43157 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775

include/wx/aui/tabmdi.h
src/aui/tabmdi.cpp

index 5f7d548bd1c425b0db948efd9543a02f06d7fb30..f448605382f6fe0a2925358c24c5ce6005c08b27 100644 (file)
@@ -81,8 +81,9 @@ public:
     virtual void ActivatePrevious();
 
 protected:
-    wxAuiMDIClientWindow   *m_pClientWindow;
-    wxAuiMDIChildFrame     *m_pActiveChild;
+    wxAuiMDIClientWindow*   m_pClientWindow;
+    wxAuiMDIChildFrame*     m_pActiveChild;
+    wxEvent*                m_pLastEvt;
 
 #if wxUSE_MENUS
     wxMenu              *m_pWindowMenu;
index 38ced9bfe495f81a0df2a082a6e510c7f1bd3d95..572b09617c1a81d0fe00fa6641d8b3fcbea7bbb8 100644 (file)
@@ -173,14 +173,12 @@ void wxAuiMDIParentFrame::SetChildMenuBar(wxAuiMDIChildFrame* pChild)
 
 bool wxAuiMDIParentFrame::ProcessEvent(wxEvent& event)
 {
-    // Stops the same event being processed repeatedly
-    static wxEventType inEvent = wxEVT_NULL;
-    if (inEvent == event.GetEventType())
+    // stops the same event being processed repeatedly
+    if (m_pLastEvt == &event)
         return false;
-
-    inEvent = event.GetEventType();
-
-    // Let the active child (if any) process the event first.
+    m_pLastEvt = &event;
+    
+    // let the active child (if any) process the event first.
     bool res = false;
     if (m_pActiveChild &&
         event.IsCommandEvent() &&
@@ -196,14 +194,15 @@ bool wxAuiMDIParentFrame::ProcessEvent(wxEvent& event)
         res = m_pActiveChild->GetEventHandler()->ProcessEvent(event);
     }
 
-    // If the event was not handled this frame will handle it!
     if (!res)
     {
-        //res = GetEventHandler()->ProcessEvent(event);
+        // if the event was not handled this frame will handle it,
+        // which is why we need the protection code at the beginning
+        // of this method
         res = wxEvtHandler::ProcessEvent(event);
     }
 
-    inEvent = wxEVT_NULL;
+    m_pLastEvt = NULL;
 
     return res;
 }
@@ -255,6 +254,7 @@ void wxAuiMDIParentFrame::ActivatePrevious()
 
 void wxAuiMDIParentFrame::Init()
 {
+    m_pLastEvt = NULL;
     m_pClientWindow = NULL;
     m_pActiveChild = NULL;
 #if wxUSE_MENUS