From b0a54b8a6bee82b1e66c92c710918e9b8146097d Mon Sep 17 00:00:00 2001 From: Robin Dunn Date: Sat, 6 Jan 2007 08:59:01 +0000 Subject: [PATCH] Fixes for segfaults when the parent frame is destroyed git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@44104 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775 --- src/aui/tabmdi.cpp | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/src/aui/tabmdi.cpp b/src/aui/tabmdi.cpp index df5d01c82b..f7328f7864 100644 --- a/src/aui/tabmdi.cpp +++ b/src/aui/tabmdi.cpp @@ -82,8 +82,9 @@ wxAuiMDIParentFrame::~wxAuiMDIParentFrame() wxDELETE(m_pClientWindow); #if wxUSE_MENUS + wxDELETE(m_pMyMenuBar); RemoveWindowMenu(GetMenuBar()); - delete m_pWindowMenu; + wxDELETE(m_pWindowMenu); #endif // wxUSE_MENUS } @@ -166,7 +167,7 @@ void wxAuiMDIParentFrame::SetMenuBar(wxMenuBar* pMenuBar) AddWindowMenu(pMenuBar); wxFrame::SetMenuBar(pMenuBar); - m_pMyMenuBar = GetMenuBar(); + //m_pMyMenuBar = GetMenuBar(); } #endif // wxUSE_MENUS @@ -179,7 +180,7 @@ void wxAuiMDIParentFrame::SetChildMenuBar(wxAuiMDIChildFrame* pChild) SetMenuBar(m_pMyMenuBar); // Make sure we know our menu bar is in use - //m_pMyMenuBar = NULL; + m_pMyMenuBar = NULL; } else { @@ -416,6 +417,13 @@ wxAuiMDIChildFrame::wxAuiMDIChildFrame(wxAuiMDIParentFrame *parent, wxAuiMDIChildFrame::~wxAuiMDIChildFrame() { + wxAuiMDIParentFrame* pParentFrame = GetMDIParentFrame(); + if (pParentFrame && pParentFrame->GetActiveChild() == this) + { + pParentFrame->SetActiveChild(NULL); + pParentFrame->SetChildMenuBar(NULL); + } + #if wxUSE_MENUS wxDELETE(m_pMenuBar); #endif // wxUSE_MENUS -- 2.45.2