X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/b0a54b8a6bee82b1e66c92c710918e9b8146097d..9a958328220b25226d259e43791eee4b06fe86ef:/src/aui/tabmdi.cpp diff --git a/src/aui/tabmdi.cpp b/src/aui/tabmdi.cpp index f7328f7864..ccf9e885f5 100644 --- a/src/aui/tabmdi.cpp +++ b/src/aui/tabmdi.cpp @@ -128,7 +128,7 @@ wxAuiTabArt* wxAuiMDIParentFrame::GetArtProvider() { if (!m_pClientWindow) return NULL; - + return m_pClientWindow->GetArtProvider(); } @@ -177,12 +177,15 @@ void wxAuiMDIParentFrame::SetChildMenuBar(wxAuiMDIChildFrame* pChild) if (!pChild) { // No Child, set Our menu bar back. - SetMenuBar(m_pMyMenuBar); + if (m_pMyMenuBar) + SetMenuBar(m_pMyMenuBar); + else + SetMenuBar(GetMenuBar()); // Make sure we know our menu bar is in use m_pMyMenuBar = NULL; } - else + else { if (pChild->GetMenuBar() == NULL) return; @@ -202,7 +205,7 @@ bool wxAuiMDIParentFrame::ProcessEvent(wxEvent& event) if (m_pLastEvt == &event) return false; m_pLastEvt = &event; - + // let the active child (if any) process the event first. bool res = false; if (m_pActiveChild && @@ -311,7 +314,7 @@ void wxAuiMDIParentFrame::AddWindowMenu(wxMenuBar *pMenuBar) int pos = pMenuBar->FindMenu(wxGetStockLabel(wxID_HELP,wxSTOCK_NOFLAGS)); if (pos == wxNOT_FOUND) pMenuBar->Append(m_pWindowMenu, _("&Window")); - else + else pMenuBar->Insert(pos, m_pWindowMenu, _("&Window")); } } @@ -331,11 +334,6 @@ void wxAuiMDIParentFrame::DoHandleMenu(wxCommandEvent& event) { return; // failure } - else - { - delete m_pActiveChild; - m_pActiveChild = NULL; - } } break; case wxWINDOWNEXT: @@ -359,16 +357,16 @@ void wxAuiMDIParentFrame::Tile(wxOrientation orient) { wxAuiMDIClientWindow* client_window = GetClientWindow(); wxASSERT_MSG(client_window, wxT("Missing MDI Client Window")); - + int cur_idx = client_window->GetSelection(); if (cur_idx == -1) return; - + if (orient == wxVERTICAL) { client_window->Split(cur_idx, wxLEFT); } - else if (orient == wxHORIZONTAL) + else if (orient == wxHORIZONTAL) { client_window->Split(cur_idx, wxTOP); } @@ -401,7 +399,7 @@ wxAuiMDIChildFrame::wxAuiMDIChildFrame(wxAuiMDIParentFrame *parent, const wxString& name) { Init(); - + // There are two ways to create an tabbed mdi child fram without // making it the active document. Either Show(false) can be called // before Create() (as is customary on some ports with wxFrame-type @@ -411,7 +409,7 @@ wxAuiMDIChildFrame::wxAuiMDIChildFrame(wxAuiMDIParentFrame *parent, // onto the panel underneath. if (style & wxMINIMIZE) m_activate_on_create = false; - + Create(parent, id, title, wxDefaultPosition, size, 0, name); } @@ -423,7 +421,7 @@ wxAuiMDIChildFrame::~wxAuiMDIChildFrame() pParentFrame->SetActiveChild(NULL); pParentFrame->SetChildMenuBar(NULL); } - + #if wxUSE_MENUS wxDELETE(m_pMenuBar); #endif // wxUSE_MENUS @@ -448,10 +446,10 @@ bool wxAuiMDIChildFrame::Create(wxAuiMDIParentFrame* parent, // create the window off-screen to prevent flicker wxPanel::Create(pClientWindow, - id, - wxPoint(cli_size.x+1, cli_size.y+1), - size, - wxNO_BORDER, name); + id, + wxPoint(cli_size.x+1, cli_size.y+1), + size, + wxNO_BORDER, name); DoShow(false); @@ -464,7 +462,7 @@ bool wxAuiMDIChildFrame::Create(wxAuiMDIParentFrame* parent, pClientWindow->AddPage(this, title, m_activate_on_create); pClientWindow->Refresh(); - + return true; } @@ -482,7 +480,7 @@ bool wxAuiMDIChildFrame::Destroy() wxActivateEvent event(wxEVT_ACTIVATE, false, GetId()); event.SetEventObject(this); GetEventHandler()->ProcessEvent(event); - + pParentFrame->SetActiveChild(NULL); pParentFrame->SetChildMenuBar(NULL); } @@ -570,15 +568,15 @@ void wxAuiMDIChildFrame::SetIcon(const wxIcon& icon) wxASSERT_MSG(pParentFrame, wxT("Missing MDI Parent Frame")); m_icon = icon; - + wxBitmap bmp; bmp.CopyFromIcon(m_icon); - + wxAuiMDIClientWindow* pClientWindow = pParentFrame->GetClientWindow(); if (pClientWindow != NULL) { int idx = pClientWindow->GetPageIndex(this); - + if (idx != -1) { pClientWindow->SetPageBitmap((size_t)idx, bmp); @@ -590,8 +588,8 @@ const wxIcon& wxAuiMDIChildFrame::GetIcon() const { return m_icon; } - - + + void wxAuiMDIChildFrame::Activate() { wxAuiMDIParentFrame* pParentFrame = GetMDIParentFrame(); @@ -659,7 +657,7 @@ void wxAuiMDIChildFrame::Init() bool wxAuiMDIChildFrame::Show(bool show) { m_activate_on_create = show; - + // do nothing return true; } @@ -725,11 +723,11 @@ bool wxAuiMDIClientWindow::CreateClient(wxAuiMDIParentFrame* parent, long style) { SetWindowStyleFlag(style); - wxSize caption_icon_size = + wxSize caption_icon_size = wxSize(wxSystemSettings::GetMetric(wxSYS_SMALLICON_X), wxSystemSettings::GetMetric(wxSYS_SMALLICON_Y)); SetUniformBitmapSize(caption_icon_size); - + if (!wxAuiNotebook::Create(parent, wxID_ANY, wxPoint(0,0), @@ -757,7 +755,7 @@ void wxAuiMDIClientWindow::PageChanged(int old_selection, int new_selection) // don't do anything if the page doesn't actually change if (old_selection == new_selection) return; - + /* // don't do anything if the new page is already active if (new_selection != -1) @@ -766,8 +764,8 @@ void wxAuiMDIClientWindow::PageChanged(int old_selection, int new_selection) if (child->GetMDIParentFrame()->GetActiveChild() == child) return; }*/ - - + + // notify old active child that it has been deactivated if (old_selection != -1) { @@ -778,24 +776,24 @@ void wxAuiMDIClientWindow::PageChanged(int old_selection, int new_selection) event.SetEventObject(old_child); old_child->GetEventHandler()->ProcessEvent(event); } - + // notify new active child that it has been activated if (new_selection != -1) { wxAuiMDIChildFrame* active_child = (wxAuiMDIChildFrame*)GetPage(new_selection); wxASSERT_MSG(active_child, wxT("wxAuiMDIClientWindow::PageChanged - null page pointer")); - + wxActivateEvent event(wxEVT_ACTIVATE, true, active_child->GetId()); event.SetEventObject(active_child); active_child->GetEventHandler()->ProcessEvent(event); - + if (active_child->GetMDIParentFrame()) { active_child->GetMDIParentFrame()->SetActiveChild(active_child); active_child->GetMDIParentFrame()->SetChildMenuBar(active_child); } } - + } @@ -803,9 +801,9 @@ void wxAuiMDIClientWindow::OnPageClose(wxAuiNotebookEvent& evt) { wxAuiMDIChildFrame* wnd; wnd = static_cast(GetPage(evt.GetSelection())); - + wnd->Close(); - + // regardless of the result of wnd->Close(), we've // already taken care of the close operations, so // suppress further processing