From: Alex Bligh <alex@alex.org.uk>
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

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)
     {