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