X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/cedd7b22f4efca68479ec4bb79a9ce5f80164a3b..e974c5d258bbb398b0eed38397749d1d071dbbf8:/src/aui/tabmdi.cpp?ds=sidebyside diff --git a/src/aui/tabmdi.cpp b/src/aui/tabmdi.cpp index ccf9e885f5..a4a7136da9 100644 --- a/src/aui/tabmdi.cpp +++ b/src/aui/tabmdi.cpp @@ -110,9 +110,11 @@ bool wxAuiMDIParentFrame::Create(wxWindow *parent, } #endif // wxUSE_MENUS - wxFrame::Create(parent, id, title, pos, size, style, name); - OnCreateClient(); - return true; + if ( !wxFrame::Create(parent, id, title, pos, size, style, name) ) + return false; + + m_pClientWindow = OnCreateClient(); + return m_pClientWindow != NULL; } @@ -252,8 +254,7 @@ wxAuiMDIClientWindow *wxAuiMDIParentFrame::GetClientWindow() const wxAuiMDIClientWindow *wxAuiMDIParentFrame::OnCreateClient() { - m_pClientWindow = new wxAuiMDIClientWindow( this ); - return m_pClientWindow; + return new wxAuiMDIClientWindow( this ); } void wxAuiMDIParentFrame::ActivateNext() @@ -416,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 @@ -767,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"));