From f67589392528eae70a4a7f4c91aca333292cddf9 Mon Sep 17 00:00:00 2001 From: Robert Roebling Date: Sun, 30 Jan 2005 12:49:00 +0000 Subject: [PATCH] Applied popup patch for deleting the handlers correctly. git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@31649 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775 --- src/common/popupcmn.cpp | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/src/common/popupcmn.cpp b/src/common/popupcmn.cpp index 3dbf68daf8..85124079c6 100644 --- a/src/common/popupcmn.cpp +++ b/src/common/popupcmn.cpp @@ -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; } -- 2.47.2