diff options
author | Jay Painter <jpaint@src.gnome.org> | 1998-03-11 07:59:46 +0000 |
---|---|---|
committer | Jay Painter <jpaint@src.gnome.org> | 1998-03-11 07:59:46 +0000 |
commit | ffc1084029713b5dfde5c96ceb2cb8937cf8288a (patch) | |
tree | 619c2c49312ff583963511c032b08c9bd7ae49ce /gtk/gtkfilesel.c | |
parent | 5724801800aee9cdda459cfd41e5a76071c128ea (diff) | |
download | gtk+-ffc1084029713b5dfde5c96ceb2cb8937cf8288a.tar.gz |
Fixed file selector
Diffstat (limited to 'gtk/gtkfilesel.c')
-rw-r--r-- | gtk/gtkfilesel.c | 58 |
1 files changed, 30 insertions, 28 deletions
diff --git a/gtk/gtkfilesel.c b/gtk/gtkfilesel.c index 0d1e4767be..66dd267ef0 100644 --- a/gtk/gtkfilesel.c +++ b/gtk/gtkfilesel.c @@ -1141,16 +1141,17 @@ gtk_file_selection_file_button (GtkWidget *widget, gpointer user_data) { GtkFileSelection *fs = NULL; - gchar *filename; + gchar *filename, *temp = NULL; g_return_if_fail (GTK_IS_CLIST (widget)); fs = user_data; g_return_if_fail (fs != NULL); g_return_if_fail (GTK_IS_FILE_SELECTION (fs)); - - filename = gtk_clist_get_row_data (GTK_CLIST (fs->file_list), row); + gtk_clist_get_text (GTK_CLIST (fs->file_list), row, 0, &temp); + filename = g_strdup (temp); + if (bevent && filename) { switch (bevent->type) @@ -1167,6 +1168,9 @@ gtk_file_selection_file_button (GtkWidget *widget, break; } } + + if (filename) + g_free (filename); } static void @@ -1177,32 +1181,36 @@ gtk_file_selection_dir_button (GtkWidget *widget, gpointer user_data) { GtkFileSelection *fs = NULL; - gchar *filename; - + gchar *filename, *temp = NULL; + g_return_if_fail (GTK_IS_CLIST (widget)); fs = GTK_FILE_SELECTION (user_data); g_return_if_fail (fs != NULL); g_return_if_fail (GTK_IS_FILE_SELECTION (fs)); - filename = gtk_clist_get_row_data (GTK_CLIST (fs->dir_list), row); - - if (bevent && filename) { + gtk_clist_get_text (GTK_CLIST (fs->dir_list), row, 0, &temp); + filename = g_strdup (temp); + + if (bevent && filename) + { + switch (bevent->type) + { + case GDK_BUTTON_PRESS: + gtk_entry_set_text (GTK_ENTRY (fs->selection_entry), filename); + break; + + case GDK_2BUTTON_PRESS: + gtk_file_selection_populate (fs, filename, FALSE); + break; + + default: + break; + } + } - switch (bevent->type) - { - case GDK_BUTTON_PRESS: - gtk_entry_set_text (GTK_ENTRY (fs->selection_entry), filename); - break; - - case GDK_2BUTTON_PRESS: - gtk_file_selection_populate (fs, filename, FALSE); - break; - - default: - break; - } - } + if (filename) + g_free (filename); } static void @@ -1245,11 +1253,9 @@ gtk_file_selection_populate (GtkFileSelection *fs, text[1] = NULL; text[0] = "./"; row = gtk_clist_append (GTK_CLIST (fs->dir_list), text); - gtk_clist_set_row_data (GTK_CLIST (fs->dir_list), row, "./"); text[0] = "../"; row = gtk_clist_append (GTK_CLIST (fs->dir_list), text); - gtk_clist_set_row_data (GTK_CLIST (fs->dir_list), row, "../"); while (poss) { @@ -1267,15 +1273,11 @@ gtk_file_selection_populate (GtkFileSelection *fs, strcmp (filename, "../") != 0) { row = gtk_clist_append (GTK_CLIST (fs->dir_list), text); - gtk_clist_set_row_data_full (GTK_CLIST (fs->dir_list), row, - filename, (GtkDestroyNotify) g_free); } } else { row = gtk_clist_append (GTK_CLIST (fs->file_list), text); - gtk_clist_set_row_data_full (GTK_CLIST (fs->file_list), row, - filename ,(GtkDestroyNotify) g_free); } } |