From 1631916e47c96992995966411ff982b160d74e04 Mon Sep 17 00:00:00 2001 From: Chris Elliott Date: Sat, 25 Sep 2004 15:21:10 +0000 Subject: [PATCH] fix an mdi crash on exit git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@29346 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775 --- src/gtk/mdi.cpp | 11 ++++++++--- src/gtk1/mdi.cpp | 11 ++++++++--- 2 files changed, 16 insertions(+), 6 deletions(-) diff --git a/src/gtk/mdi.cpp b/src/gtk/mdi.cpp index f1006d4ca5..131cee85cb 100644 --- a/src/gtk/mdi.cpp +++ b/src/gtk/mdi.cpp @@ -15,6 +15,7 @@ #include "wx/wxprec.h" #include "wx/mdi.h" +#include "wx/notebook.h" #if wxUSE_MDI @@ -82,8 +83,11 @@ gtk_mdi_page_change_callback( GtkNotebook *WXUNUSED(widget), while (node) { wxMDIChildFrame *child_frame = wxDynamicCast( node->GetData(), wxMDIChildFrame ); - - wxASSERT_MSG( child_frame, _T("child is not a wxMDIChildFrame") ); + // CE: we come here in the destructor with a null child_frame - I think because + // gtk_signal_connect( GTK_OBJECT(m_widget), "switch_page", (see below) + // isn't deleted early enough + if (!child_frame) + return ; if (child_frame->m_page == page) { @@ -329,7 +333,7 @@ wxMDIChildFrame::~wxMDIChildFrame() { if (m_menuBar) delete m_menuBar; -} +} bool wxMDIChildFrame::Create( wxMDIParentFrame *parent, wxWindowID id, const wxString& title, @@ -484,6 +488,7 @@ wxMDIClientWindow::wxMDIClientWindow( wxMDIParentFrame *parent, long style ) wxMDIClientWindow::~wxMDIClientWindow() { + } bool wxMDIClientWindow::CreateClient( wxMDIParentFrame *parent, long style ) diff --git a/src/gtk1/mdi.cpp b/src/gtk1/mdi.cpp index f1006d4ca5..131cee85cb 100644 --- a/src/gtk1/mdi.cpp +++ b/src/gtk1/mdi.cpp @@ -15,6 +15,7 @@ #include "wx/wxprec.h" #include "wx/mdi.h" +#include "wx/notebook.h" #if wxUSE_MDI @@ -82,8 +83,11 @@ gtk_mdi_page_change_callback( GtkNotebook *WXUNUSED(widget), while (node) { wxMDIChildFrame *child_frame = wxDynamicCast( node->GetData(), wxMDIChildFrame ); - - wxASSERT_MSG( child_frame, _T("child is not a wxMDIChildFrame") ); + // CE: we come here in the destructor with a null child_frame - I think because + // gtk_signal_connect( GTK_OBJECT(m_widget), "switch_page", (see below) + // isn't deleted early enough + if (!child_frame) + return ; if (child_frame->m_page == page) { @@ -329,7 +333,7 @@ wxMDIChildFrame::~wxMDIChildFrame() { if (m_menuBar) delete m_menuBar; -} +} bool wxMDIChildFrame::Create( wxMDIParentFrame *parent, wxWindowID id, const wxString& title, @@ -484,6 +488,7 @@ wxMDIClientWindow::wxMDIClientWindow( wxMDIParentFrame *parent, long style ) wxMDIClientWindow::~wxMDIClientWindow() { + } bool wxMDIClientWindow::CreateClient( wxMDIParentFrame *parent, long style ) -- 2.45.2