]> git.saurik.com Git - wxWidgets.git/blobdiff - src/gtk/filepicker.cpp
Add wxTranslations::GetTranslatedString().
[wxWidgets.git] / src / gtk / filepicker.cpp
index 104d7d5d92ab7fd35df7ea8d906c4d352c4a65b7..3f99ce13f792c53bb988eed4e8649d73b699c710 100644 (file)
@@ -4,7 +4,6 @@
 // Author:      Francesco Montorsi
 // Modified By:
 // Created:     15/04/2006
-// Id:          $Id$
 // Copyright:   (c) Francesco Montorsi
 // Licence:     wxWindows licence
 /////////////////////////////////////////////////////////////////////////////
@@ -103,7 +102,17 @@ bool wxFileButton::Create( wxWindow *parent, wxWindowID id,
 
 wxFileButton::~wxFileButton()
 {
-    delete m_dialog;
+    if ( m_dialog )
+    {
+        // when m_dialog is deleted, it will destroy the widget it is sharing
+        // with GtkFileChooserButton, which results in a bunch of Gtk-CRITICAL
+        // errors from GtkFileChooserButton. To avoid this, call gtk_widget_destroy()
+        // on GtkFileChooserButton first (our base dtor will do it again, but
+        // that does no harm). m_dialog holds a reference to the shared widget,
+        // so it won't go away until m_dialog base dtor unrefs it.
+        gtk_widget_destroy(m_widget);
+        delete m_dialog;
+    }
 }
 
 void wxFileButton::OnDialogOK(wxCommandEvent& ev)
@@ -259,7 +268,12 @@ bool wxDirButton::Create( wxWindow *parent, wxWindowID id,
 
 wxDirButton::~wxDirButton()
 {
-    delete m_dialog;
+    if (m_dialog)
+    {
+        // see ~wxFileButton() comment
+        gtk_widget_destroy(m_widget);
+        delete m_dialog;
+    }
 }
 
 void wxDirButton::GTKUpdatePath(const char *gtkpath)