X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/6e42617af493da590f7d08ed248be615ab817eee..655e246b86923bf721f1725191140451a189ca0c:/src/aui/tabmdi.cpp

diff --git a/src/aui/tabmdi.cpp b/src/aui/tabmdi.cpp
index f5057af3ba..8a560e75ff 100644
--- a/src/aui/tabmdi.cpp
+++ b/src/aui/tabmdi.cpp
@@ -417,10 +417,20 @@ wxAuiMDIChildFrame::wxAuiMDIChildFrame(wxAuiMDIParentFrame *parent,
 wxAuiMDIChildFrame::~wxAuiMDIChildFrame()
 {
     wxAuiMDIParentFrame* pParentFrame = GetMDIParentFrame();
-    if (pParentFrame && pParentFrame->GetActiveChild() == this)
+    if (pParentFrame)
     {
-        pParentFrame->SetActiveChild(NULL);
-        pParentFrame->SetChildMenuBar(NULL);
+        if (pParentFrame->GetActiveChild() == this)
+        {
+            pParentFrame->SetActiveChild(NULL);
+            pParentFrame->SetChildMenuBar(NULL);
+        }
+        wxAuiMDIClientWindow* pClientWindow = pParentFrame->GetClientWindow();
+        wxASSERT(pClientWindow);
+        int idx = pClientWindow->GetPageIndex(this);
+        if (idx != wxNOT_FOUND)
+        {
+            pClientWindow->RemovePage(idx);
+        }
     }
 
 #if wxUSE_MENUS
@@ -437,7 +447,7 @@ bool wxAuiMDIChildFrame::Create(wxAuiMDIParentFrame* parent,
                                 const wxString& name)
 {
     wxAuiMDIClientWindow* pClientWindow = parent->GetClientWindow();
-    wxASSERT_MSG((pClientWindow != (wxWindow*) NULL), wxT("Missing MDI client window."));
+    wxASSERT_MSG((pClientWindow != NULL), wxT("Missing MDI client window."));
 
     // see comment in constructor
     if (style & wxMINIMIZE)
@@ -768,7 +778,7 @@ void wxAuiMDIClientWindow::PageChanged(int old_selection, int new_selection)
 
 
     // notify old active child that it has been deactivated
-    if (old_selection != -1)
+    if ((old_selection != -1) && (old_selection < (int)GetPageCount()))
     {
         wxAuiMDIChildFrame* old_child = (wxAuiMDIChildFrame*)GetPage(old_selection);
         wxASSERT_MSG(old_child, wxT("wxAuiMDIClientWindow::PageChanged - null page pointer"));