]> git.saurik.com Git - wxWidgets.git/commitdiff
Don't free a string that is managed by wxGtkString, that's the whole _point_ of wxGtk...
authorPaul Cornett <paulcor@bullseye.com>
Tue, 3 Oct 2006 16:01:18 +0000 (16:01 +0000)
committerPaul Cornett <paulcor@bullseye.com>
Tue, 3 Oct 2006 16:01:18 +0000 (16:01 +0000)
While we're at it, lets use it some more.

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

src/gtk/dataobj.cpp
src/gtk/dirdlg.cpp
src/gtk/filedlg.cpp
src/gtk/filepicker.cpp
src/gtk/fontdlg.cpp
src/gtk/listbox.cpp
src/gtk/textctrl.cpp

index 88ba70ce97f82425409e16e9eeee54f669ccc2e1..ef24cfe8afc6dea778727548f8dcf1a211163f24 100644 (file)
@@ -23,7 +23,7 @@
 #include "wx/mstream.h"
 #include "wx/uri.h"
 
 #include "wx/mstream.h"
 #include "wx/uri.h"
 
-#include <gdk/gdk.h>
+#include "wx/gtk/private.h"
 
 //-------------------------------------------------------------------------
 // global data
 
 //-------------------------------------------------------------------------
 // global data
@@ -110,10 +110,8 @@ wxDataFormatId wxDataFormat::GetType() const
 
 wxString wxDataFormat::GetId() const
 {
 
 wxString wxDataFormat::GetId() const
 {
-    gchar* atom_name = gdk_atom_name( m_format );
-    wxString ret = wxString::FromAscii( atom_name );
-    g_free(atom_name);
-    return ret;
+    wxGtkString atom_name(gdk_atom_name(m_format));
+    return wxString::FromAscii(atom_name);
 }
 
 void wxDataFormat::SetId( NativeFormat format )
 }
 
 void wxDataFormat::SetId( NativeFormat format )
index 84f672f95dd48d68e0eebe9bae8cf28d48753328..70faf33d0cdf07d284b28612de3c9347668b7a8a 100644 (file)
     #include "wx/filedlg.h"
 #endif
 
     #include "wx/filedlg.h"
 #endif
 
-#include <gtk/gtk.h>
 #include "wx/gtk/private.h"
 
 #include <unistd.h> // chdir
 
 #include "wx/gtk/private.h"
 
 #include <unistd.h> // chdir
 
-
-//-----------------------------------------------------------------------------
-// idle system
-//-----------------------------------------------------------------------------
-
-extern void wxapp_install_idle_handler();
-
 //-----------------------------------------------------------------------------
 // "clicked" for OK-button
 //-----------------------------------------------------------------------------
 //-----------------------------------------------------------------------------
 // "clicked" for OK-button
 //-----------------------------------------------------------------------------
@@ -48,13 +40,12 @@ extern void wxapp_install_idle_handler();
 extern "C" {
 static void gtk_dirdialog_ok_callback(GtkWidget *widget, wxDirDialog *dialog)
 {
 extern "C" {
 static void gtk_dirdialog_ok_callback(GtkWidget *widget, wxDirDialog *dialog)
 {
-    gchar* filename = gtk_file_chooser_get_filename(GTK_FILE_CHOOSER(widget));
-
     // change to the directory where the user went if asked
     if (dialog->HasFlag(wxDD_CHANGE_DIR))
     // change to the directory where the user went if asked
     if (dialog->HasFlag(wxDD_CHANGE_DIR))
+    {
+        wxGtkString filename(gtk_file_chooser_get_filename(GTK_FILE_CHOOSER(widget)));
         chdir(filename);
         chdir(filename);
-
-    g_free(filename);
+    }
 
     wxCommandEvent event(wxEVT_COMMAND_BUTTON_CLICKED, wxID_OK);
     event.SetEventObject(dialog);
 
     wxCommandEvent event(wxEVT_COMMAND_BUTTON_CLICKED, wxID_OK);
     event.SetEventObject(dialog);
@@ -213,14 +204,11 @@ wxString wxDirDialog::GetPath() const
 {
     if (!gtk_check_version(2,4,0))
     {
 {
     if (!gtk_check_version(2,4,0))
     {
-        gchar *str = gtk_file_chooser_get_filename( GTK_FILE_CHOOSER(m_widget) );
-        wxString ret = wxConvFileName->cMB2WX(str);
-        if (str) g_free(str);
-
-        return ret;
+        wxGtkString str(gtk_file_chooser_get_filename(GTK_FILE_CHOOSER(m_widget)));
+        return wxConvFileName->cMB2WX(str);
     }
     }
-    else
-        return wxGenericDirDialog::GetPath();
+
+    return wxGenericDirDialog::GetPath();
 }
 
 #endif // wxUSE_DIRDLG
 }
 
 #endif // wxUSE_DIRDLG
index 81e12219e4b4bdd387c9d66e2fe1b56e80bb7b3d..16cc0b0c5617b699e286bd0978912513cef73c46 100644 (file)
@@ -42,7 +42,7 @@ extern "C" {
 static void gtk_filedialog_ok_callback(GtkWidget *widget, wxFileDialog *dialog)
 {
     int style = dialog->GetWindowStyle();
 static void gtk_filedialog_ok_callback(GtkWidget *widget, wxFileDialog *dialog)
 {
     int style = dialog->GetWindowStyle();
-    gchar* filename = gtk_file_chooser_get_filename(GTK_FILE_CHOOSER(widget));
+    wxGtkString filename(gtk_file_chooser_get_filename(GTK_FILE_CHOOSER(widget)));
 
     // gtk version numbers must be identical with the one in ctor (that calls set_do_overwrite_confirmation)
 #if GTK_CHECK_VERSION(2,7,3)
 
     // gtk version numbers must be identical with the one in ctor (that calls set_do_overwrite_confirmation)
 #if GTK_CHECK_VERSION(2,7,3)
@@ -69,13 +69,10 @@ static void gtk_filedialog_ok_callback(GtkWidget *widget, wxFileDialog *dialog)
     if (style & wxFD_CHANGE_DIR)
     {
         // Use chdir to not care about filename encodings
     if (style & wxFD_CHANGE_DIR)
     {
         // Use chdir to not care about filename encodings
-        gchar* folder = g_path_get_dirname(filename);
+        wxGtkString folder(g_path_get_dirname(filename));
         chdir(folder);
         chdir(folder);
-        g_free(folder);
     }
 
     }
 
-    g_free(filename);
-
     wxCommandEvent event(wxEVT_COMMAND_BUTTON_CLICKED, wxID_OK);
     event.SetEventObject(dialog);
     dialog->GetEventHandler()->ProcessEvent(event);
     wxCommandEvent event(wxEVT_COMMAND_BUTTON_CLICKED, wxID_OK);
     event.SetEventObject(dialog);
     dialog->GetEventHandler()->ProcessEvent(event);
@@ -114,9 +111,7 @@ static void gtk_filedialog_update_preview_callback(GtkFileChooser *chooser,
 #if GTK_CHECK_VERSION(2,4,0)
     GtkWidget *preview = GTK_WIDGET(user_data);
 
 #if GTK_CHECK_VERSION(2,4,0)
     GtkWidget *preview = GTK_WIDGET(user_data);
 
-    gchar *str = gtk_file_chooser_get_preview_filename(chooser);
-    wxGtkString filename(str);
-    if (str) g_free(str);
+    wxGtkString filename(gtk_file_chooser_get_preview_filename(chooser));
 
     if ( !filename )
         return;
 
     if ( !filename )
         return;
@@ -310,14 +305,11 @@ wxString wxFileDialog::GetPath() const
 {
     if (!gtk_check_version(2,4,0))
     {
 {
     if (!gtk_check_version(2,4,0))
     {
-        gchar *str = gtk_file_chooser_get_filename(GTK_FILE_CHOOSER(m_widget));
-        wxString ret = wxConvFileName->cMB2WX(str);
-        if (str) g_free(str);
-
-        return ret;
+        wxGtkString str(gtk_file_chooser_get_filename(GTK_FILE_CHOOSER(m_widget)));
+        return wxConvFileName->cMB2WX(str);
     }
     }
-    else
-        return wxGenericFileDialog::GetPath();
+
+    return wxGenericFileDialog::GetPath();
 }
 
 void wxFileDialog::GetFilenames(wxArrayString& files) const
 }
 
 void wxFileDialog::GetFilenames(wxArrayString& files) const
@@ -401,14 +393,11 @@ wxString wxFileDialog::GetDirectory() const
 {
     if (!gtk_check_version(2,4,0))
     {
 {
     if (!gtk_check_version(2,4,0))
     {
-        gchar *str = gtk_file_chooser_get_current_folder( GTK_FILE_CHOOSER(m_widget) );
-        wxString ret = wxConvFileName->cMB2WX(str);
-        if (str) g_free(str);
-
-        return ret;
+        wxGtkString str(gtk_file_chooser_get_current_folder(GTK_FILE_CHOOSER(m_widget)));
+        return wxConvFileName->cMB2WX(str);
     }
     }
-    else
-        return wxGenericFileDialog::GetDirectory();
+
+    return wxGenericFileDialog::GetDirectory();
 }
 
 void wxFileDialog::SetFilename(const wxString& name)
 }
 
 void wxFileDialog::SetFilename(const wxString& name)
index 6779e751117164ef3de7ba3cc8aa2b5e703d253a..cec62bdeb1333320800cf895ba9cbaa8189c0750 100644 (file)
@@ -22,9 +22,7 @@
 #include "wx/filepicker.h"
 #include "wx/tooltip.h"
 
 #include "wx/filepicker.h"
 #include "wx/tooltip.h"
 
-#include <gtk/gtk.h>
-
-
+#include "wx/gtk/private.h"
 
 // ============================================================================
 // implementation
 
 // ============================================================================
 // implementation
@@ -162,7 +160,7 @@ static void gtk_dirbutton_currentfolderchanged_callback(GtkFileChooserButton *wi
 
     // NB: it's important to use gtk_file_chooser_get_filename instead of
     //     gtk_file_chooser_get_current_folder (see GTK docs) !
 
     // NB: it's important to use gtk_file_chooser_get_filename instead of
     //     gtk_file_chooser_get_current_folder (see GTK docs) !
-    gchar* filename = gtk_file_chooser_get_filename(GTK_FILE_CHOOSER(widget));
+    wxGtkString filename(gtk_file_chooser_get_filename(GTK_FILE_CHOOSER(widget)));
     p->UpdatePath(filename);
 
     // since GtkFileChooserButton when used to pick directories also uses a combobox,
     p->UpdatePath(filename);
 
     // since GtkFileChooserButton when used to pick directories also uses a combobox,
@@ -172,7 +170,6 @@ static void gtk_dirbutton_currentfolderchanged_callback(GtkFileChooserButton *wi
     // style was given.
     if (p->HasFlag(wxDIRP_CHANGE_DIR))
         chdir(filename);
     // style was given.
     if (p->HasFlag(wxDIRP_CHANGE_DIR))
         chdir(filename);
-    g_free(filename);
 
     // ...and fire an event
     wxFileDirPickerEvent event(wxEVT_COMMAND_DIRPICKER_CHANGED, p, p->GetId(), p->GetPath());
 
     // ...and fire an event
     wxFileDirPickerEvent event(wxEVT_COMMAND_DIRPICKER_CHANGED, p, p->GetId(), p->GetPath());
index 8c6f452f53a9cca4a38a99c613a9d73af7015a5b..f6059b9e635c42468f3b978f1ac53f3bd4cc3d2d 100644 (file)
@@ -60,11 +60,9 @@ void gtk_fontdialog_ok_callback( GtkWidget *WXUNUSED(widget), wxFontDialog *dial
 
     GtkFontSelectionDialog *fontdlg = GTK_FONT_SELECTION_DIALOG(dialog->m_widget);
 
 
     GtkFontSelectionDialog *fontdlg = GTK_FONT_SELECTION_DIALOG(dialog->m_widget);
 
-    gchar *fontname = gtk_font_selection_dialog_get_font_name(fontdlg);
+    wxGtkString fontname(gtk_font_selection_dialog_get_font_name(fontdlg));
     dialog->SetChosenFont( fontname);
 
     dialog->SetChosenFont( fontname);
 
-    g_free( fontname );
-
     wxCommandEvent event(wxEVT_COMMAND_BUTTON_CLICKED, wxID_OK);
     event.SetEventObject( dialog );
     dialog->GetEventHandler()->ProcessEvent( event );
     wxCommandEvent event(wxEVT_COMMAND_BUTTON_CLICKED, wxID_OK);
     event.SetEventObject( dialog );
     dialog->GetEventHandler()->ProcessEvent( event );
index f38d62d070eb0dc46b002f3891ffbbd972c85929..c8d292fb4ddc519e9e9e5429624879f999a9ebd1 100644 (file)
@@ -392,12 +392,11 @@ static gboolean gtk_listbox_searchequal_callback(GtkTreeModel* model,
                              WXLISTBOX_DATACOLUMN_ARG(listbox),
                              &entry, -1);
     wxCHECK_MSG(entry, 0, wxT("Could not get entry"));
                              WXLISTBOX_DATACOLUMN_ARG(listbox),
                              &entry, -1);
     wxCHECK_MSG(entry, 0, wxT("Could not get entry"));
-    gchar* keycollatekey = g_utf8_collate_key(key, -1);
+    wxGtkString keycollatekey(g_utf8_collate_key(key, -1));
 
     int ret = strcasecmp(keycollatekey,
                          gtk_tree_entry_get_collate_key(entry));
 
 
     int ret = strcasecmp(keycollatekey,
                          gtk_tree_entry_get_collate_key(entry));
 
-    g_free(keycollatekey);
     g_object_unref (entry);
 
     return ret != 0;
     g_object_unref (entry);
 
     return ret != 0;
index 703ceccd9c7b18bb529d1ba1ec6712a73dc436c7..79cdce64654dd503464221035182b0f73086c281 100644 (file)
@@ -69,10 +69,9 @@ static void wxGtkTextApplyTagsFromAttr(GtkTextBuffer *text_buffer,
 
     if (attr.HasFont())
     {
 
     if (attr.HasFont())
     {
-        char *font_string;
         PangoFontDescription *font_description = attr.GetFont().GetNativeFontInfo()->description;
         PangoFontDescription *font_description = attr.GetFont().GetNativeFontInfo()->description;
-        font_string = pango_font_description_to_string(font_description);
-        g_snprintf(buf, sizeof(buf), "WXFONT %s", font_string);
+        wxGtkString font_string(pango_font_description_to_string(font_description));
+        g_snprintf(buf, sizeof(buf), "WXFONT %s", font_string.c_str());
         tag = gtk_text_tag_table_lookup( gtk_text_buffer_get_tag_table( text_buffer ),
                                          buf );
         if (!tag)
         tag = gtk_text_tag_table_lookup( gtk_text_buffer_get_tag_table( text_buffer ),
                                          buf );
         if (!tag)
@@ -80,7 +79,6 @@ static void wxGtkTextApplyTagsFromAttr(GtkTextBuffer *text_buffer,
                                               "font-desc", font_description,
                                               NULL );
         gtk_text_buffer_apply_tag (text_buffer, tag, start, end);
                                               "font-desc", font_description,
                                               NULL );
         gtk_text_buffer_apply_tag (text_buffer, tag, start, end);
-        g_free (font_string);
 
         if (attr.GetFont().GetUnderlined())
         {
 
         if (attr.GetFont().GetUnderlined())
         {
@@ -787,13 +785,11 @@ wxString wxTextCtrl::GetValue() const
         gtk_text_buffer_get_start_iter( m_buffer, &start );
         GtkTextIter end;
         gtk_text_buffer_get_end_iter( m_buffer, &end );
         gtk_text_buffer_get_start_iter( m_buffer, &start );
         GtkTextIter end;
         gtk_text_buffer_get_end_iter( m_buffer, &end );
-        gchar *text = gtk_text_buffer_get_text( m_buffer, &start, &end, TRUE );
+        wxGtkString text(gtk_text_buffer_get_text(m_buffer, &start, &end, true));
 
         const wxWxCharBuffer buf = wxGTK_CONV_BACK(text);
         if ( buf )
             tmp = buf;
 
         const wxWxCharBuffer buf = wxGTK_CONV_BACK(text);
         if ( buf )
             tmp = buf;
-
-        g_free( text );
     }
     else
     {
     }
     else
     {
@@ -942,22 +938,22 @@ void wxTextCtrl::AppendText( const wxString &text )
 
 wxString wxTextCtrl::GetLineText( long lineNo ) const
 {
 
 wxString wxTextCtrl::GetLineText( long lineNo ) const
 {
+    wxString result;
     if ( IsMultiLine() )
     {
         GtkTextIter line;
         gtk_text_buffer_get_iter_at_line(m_buffer,&line,lineNo);
         GtkTextIter end = line;
         gtk_text_iter_forward_to_line_end(&end);
     if ( IsMultiLine() )
     {
         GtkTextIter line;
         gtk_text_buffer_get_iter_at_line(m_buffer,&line,lineNo);
         GtkTextIter end = line;
         gtk_text_iter_forward_to_line_end(&end);
-        gchar *text = gtk_text_buffer_get_text(m_buffer,&line,&end,TRUE);
-        wxString result(wxGTK_CONV_BACK(text));
-        g_free(text);
-        return result;
+        wxGtkString text(gtk_text_buffer_get_text(m_buffer, &line, &end, true));
+        result = wxGTK_CONV_BACK(text);
     }
     else
     {
     }
     else
     {
-        if (lineNo == 0) return GetValue();
-        return wxEmptyString;
+        if (lineNo == 0)
+            result = GetValue();
     }
     }
+    return result;
 }
 
 void wxTextCtrl::OnDropFiles( wxDropFilesEvent &WXUNUSED(event) )
 }
 
 void wxTextCtrl::OnDropFiles( wxDropFilesEvent &WXUNUSED(event) )