]> git.saurik.com Git - wxWidgets.git/commitdiff
applied patch 1908782 wxAuiMDIChildFrame not removed from wxAuiMDIClientWindow
authorBenjamin Williams <bwilliams@kirix.com>
Fri, 9 May 2008 18:59:19 +0000 (18:59 +0000)
committerBenjamin Williams <bwilliams@kirix.com>
Fri, 9 May 2008 18:59:19 +0000 (18:59 +0000)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@53508 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775

src/aui/tabmdi.cpp

index f5057af3baa1fb2b9b476203bca31ec9be58a6d8..a4a7136da959ec9a4a361c6982c5c964ff242c19 100644 (file)
@@ -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
@@ -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"));