]> git.saurik.com Git - wxWidgets.git/commitdiff
Fix GTK+ errors during wxFilePickerCtrl destruction after recent changes.
authorVadim Zeitlin <vadim@wxwidgets.org>
Wed, 22 May 2013 13:36:10 +0000 (13:36 +0000)
committerVadim Zeitlin <vadim@wxwidgets.org>
Wed, 22 May 2013 13:36:10 +0000 (13:36 +0000)
We do need to destroy the dialog (see #15156), but we must not destroy its
GtkWidget as it is owned by GtkFileChooserButton itself, so amend the changes
of r74030 to only destroy the C++ object, not GTK+ one.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@74042 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775

src/gtk/filepicker.cpp

index 104d7d5d92ab7fd35df7ea8d906c4d352c4a65b7..bebcf84931e415d05d90a0f17bbbc7e4173c1bec 100644 (file)
@@ -103,7 +103,18 @@ bool wxFileButton::Create( wxWindow *parent, wxWindowID id,
 
 wxFileButton::~wxFileButton()
 {
-    delete m_dialog;
+    if ( m_dialog )
+    {
+        // We need to delete the C++ dialog object here but we shouldn't delete
+        // its widget which is used by our GtkFileChooserButton and will be
+        // deleted by it when it is itself destroyed in our base class dtor. So
+        // take the widget ownership away from the dialog to avoid GTK+ errors
+        // that would happen if GtkFileChooserButton tried to access the
+        // already destroyed dialog widget.
+        g_object_unref(m_dialog->m_widget);
+        m_dialog->m_widget = NULL;
+        delete m_dialog;
+    }
 }
 
 void wxFileButton::OnDialogOK(wxCommandEvent& ev)