]> git.saurik.com Git - wxWidgets.git/commitdiff
Applied popup patch for deleting the handlers
authorRobert Roebling <robert@roebling.de>
Sun, 30 Jan 2005 12:49:00 +0000 (12:49 +0000)
committerRobert Roebling <robert@roebling.de>
Sun, 30 Jan 2005 12:49:00 +0000 (12:49 +0000)
   correctly.

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

src/common/popupcmn.cpp

index 3dbf68daf824dbc3ed0a9d0c9131d083a5ed91f5..85124079c688c3d66f14132e14724879d77adc58 100644 (file)
@@ -198,16 +198,13 @@ wxPopupTransientWindow::wxPopupTransientWindow(wxWindow *parent, int style)
 wxPopupTransientWindow::~wxPopupTransientWindow()
 {
     PopHandlers();
-    
-    delete m_handlerFocus;
-    delete m_handlerPopup;
 }
 
 void wxPopupTransientWindow::PopHandlers()
 {
     if ( m_child )
     {
-        if ( !m_child->RemoveEventHandler(m_handlerPopup) )
+        if ( m_handlerPopup && !m_child->RemoveEventHandler(m_handlerPopup) )
         {
             // something is very wrong and someone else probably deleted our
             // handler - so don't risk deleting it second time
@@ -221,19 +218,26 @@ void wxPopupTransientWindow::PopHandlers()
 #ifdef __WXMSW__
     if ( m_focus )
     {
-        if ( !m_focus->RemoveEventHandler(m_handlerFocus) )
+        if ( m_handlerFocus && !m_focus->RemoveEventHandler(m_handlerFocus) )
         {
             // see above
             m_handlerFocus = NULL;
         }
     }
 #else
-    if ( !RemoveEventHandler(m_handlerFocus) )
+    if ( m_handlerFocus && !RemoveEventHandler(m_handlerFocus) )
     {
         // see above
         m_handlerFocus = NULL;
     }
 #endif
+
+    // delete the handlers, they'll be created as necessary in Popup()
+    delete m_handlerPopup;
+    m_handlerPopup = NULL;
+    delete m_handlerFocus;
+    m_handlerFocus = NULL;
+
     m_focus = NULL;
 }