]> git.saurik.com Git - wxWidgets.git/commitdiff
Applied patch [ 591998 ] EventHandler chain incorrectly updated
authorJulian Smart <julian@anthemion.co.uk>
Thu, 8 Aug 2002 09:21:56 +0000 (09:21 +0000)
committerJulian Smart <julian@anthemion.co.uk>
Thu, 8 Aug 2002 09:21:56 +0000 (09:21 +0000)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@16403 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775

src/common/wincmn.cpp

index e0d1e1af70b9605c9bf577895e9df8eabefa0212..6f9473274833ee1610804d37e0a283dfe0ca4f8d 100644 (file)
@@ -723,6 +723,7 @@ bool wxWindowBase::Reparent(wxWindowBase *newParent)
 void wxWindowBase::PushEventHandler(wxEvtHandler *handler)
 {
     handler->SetNextHandler(GetEventHandler());
+    GetEventHandler()->SetPreviousHandler(handler);
     SetEventHandler(handler);
 }
 
@@ -733,6 +734,7 @@ wxEvtHandler *wxWindowBase::PopEventHandler(bool deleteHandler)
     {
         wxEvtHandler *handlerB = handlerA->GetNextHandler();
         handlerA->SetNextHandler((wxEvtHandler *)NULL);
+        handlerB->SetPreviousHandler((wxEvtHandler *)NULL);
         SetEventHandler(handlerB);
         if ( deleteHandler )
         {
@@ -765,6 +767,10 @@ bool wxWindowBase::RemoveEventHandler(wxEvtHandler *handler)
                 SetEventHandler(handlerNext);
             }
 
+            if ( handlerNext )
+            {
+                handlerNext->SetPreviousHandler ( handlerPrev );
+            }
             handler->SetNextHandler(NULL);
 
             return TRUE;