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
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)
// 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"));