X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/5d3aeb0f571b83a713edbd53fa4fca457b0b1053..3fd8c9885425ab527572a74d16badc913dfba53c:/src/aui/auibook.cpp?ds=sidebyside diff --git a/src/aui/auibook.cpp b/src/aui/auibook.cpp index bc7f8fb218..82d4a4717c 100644 --- a/src/aui/auibook.cpp +++ b/src/aui/auibook.cpp @@ -35,6 +35,7 @@ WX_DEFINE_OBJARRAY(wxAuiNotebookPageArray) WX_DEFINE_OBJARRAY(wxAuiTabContainerButtonArray) +DEFINE_EVENT_TYPE(wxEVT_COMMAND_AUINOTEBOOK_PAGE_CLOSE) DEFINE_EVENT_TYPE(wxEVT_COMMAND_AUINOTEBOOK_PAGE_CHANGING) DEFINE_EVENT_TYPE(wxEVT_COMMAND_AUINOTEBOOK_PAGE_CHANGED) DEFINE_EVENT_TYPE(wxEVT_COMMAND_AUINOTEBOOK_BUTTON) @@ -2533,6 +2534,17 @@ void wxAuiNotebook::OnTabButton(wxCommandEvent& command_evt) { wxWindow* close_wnd = tabs->GetWindowFromIdx(selection); + + // ask owner if it's ok to close the tab + wxAuiNotebookEvent e(wxEVT_COMMAND_AUINOTEBOOK_PAGE_CLOSE, m_windowId); + e.SetSelection(m_tabs.GetIdxFromWindow(close_wnd)); + e.SetOldSelection(evt.GetSelection()); + e.SetEventObject(this); + GetEventHandler()->ProcessEvent(e); + if (!e.IsAllowed()) + return; + + if (close_wnd->IsKindOf(CLASSINFO(wxAuiMDIChildFrame))) { close_wnd->Close();