From: Alex Bligh Date: Tue, 4 Jul 2006 19:52:22 +0000 (+0000) Subject: wxAUI: Send a cancel event to the window within a frame which is closed, so it knows... X-Git-Url: https://git.saurik.com/wxWidgets.git/commitdiff_plain/cf08f19a72547be20ed9fda6e2ef75c3985985c7?ds=inline wxAUI: Send a cancel event to the window within a frame which is closed, so it knows it is being destroyed. git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@39983 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775 --- diff --git a/src/aui/framemanager.cpp b/src/aui/framemanager.cpp index d337152711..b44dc0aa26 100644 --- a/src/aui/framemanager.cpp +++ b/src/aui/framemanager.cpp @@ -3486,8 +3486,20 @@ void wxFrameManager::OnPaneButton(wxFrameManagerEvent& event) if (event.button == wxPaneInfo::buttonClose) { - pane.Hide(); - Update(); + if (pane.IsOk()) + { + wxWindow * pane_window = pane.window; + wxCommandEvent cancelEvent(wxEVT_COMMAND_BUTTON_CLICKED, wxID_CANCEL); + cancelEvent.SetEventObject( pane_window ); + pane_window->GetEventHandler()->ProcessEvent(cancelEvent); + + // The problem here is that the above can cause the window itself to be destroyed + if (!pane_window->IsBeingDeleted() && pane.IsOk()) + { + pane.Hide(); + Update(); + } + } } else if (event.button == wxPaneInfo::buttonPin) {