GNOME Bugzilla – Bug 60166
Unintuitive GtkFilesel behaviour
Last modified: 2004-12-22 21:47:04 UTC
When selecting a directory or by double-clicking on it, any previously entered in the filenamefs->selection_entry disappears. This is annoying and unexpected for end-users. The following diff fixes this problem. ---- diff -durpN gtk+-1.2.10.orig/ChangeLog gtk+-1.2.10/ChangeLog --- gtk+-1.2.10.orig/ChangeLog Sun Apr 1 23:02:03 2001 +++ gtk+-1.2.10/ChangeLog Thu Sep 6 16:14:20 2001 @@ -1,3 +1,11 @@ +2001-09-06 Wolfgang Sourdeau <wolfgang@contre.com> + + * gtk/gtkfilesel.c (gtk_file_selection_populate): file name is + kept intact in fs->selection_entry when browsing directories. + (gtk_file_selection_dir_button): when a filename is selected, + don't delete it from fs->selection_entry when a directory is + clicked on. + Sun Apr 1 23:01:31 2001 Owen Taylor <otaylor@redhat.com> * Released 1.2.10. diff -durpN gtk+-1.2.10.orig/gtk/gtkfilesel.c gtk+-1.2.10/gtk/gtkfilesel.c --- gtk+-1.2.10.orig/gtk/gtkfilesel.c Thu Feb 15 23:36:19 2001 +++ gtk+-1.2.10/gtk/gtkfilesel.c Thu Sep 6 16:13:42 2001 @@ -1272,7 +1272,7 @@ gtk_file_selection_dir_button (GtkWidget gpointer user_data) { GtkFileSelection *fs = NULL; - gchar *filename, *temp = NULL; + gchar *orig_filename = NULL, *filename, *temp = NULL; g_return_if_fail (GTK_IS_CLIST (widget)); @@ -1281,7 +1281,12 @@ gtk_file_selection_dir_button (GtkWidget g_return_if_fail (GTK_IS_FILE_SELECTION (fs)); gtk_clist_get_text (GTK_CLIST (fs->dir_list), row, 0, &temp); - filename = g_strdup (temp); + orig_filename = gtk_entry_get_text (GTK_ENTRY (fs->selection_entry)); + + if (orig_filename && *g_basename (orig_filename)) + filename = g_strdup_printf ("%s%s", temp, g_basename(orig_filename)); + else + filename = g_strdup (temp); if (filename) { @@ -1444,7 +1449,11 @@ gtk_file_selection_populate (GtkFileSele else { if (fs->selection_entry) - gtk_entry_set_text (GTK_ENTRY (fs->selection_entry), ""); + { + text[0] = gtk_entry_get_text (GTK_ENTRY (fs->selection_entry)); + filename = g_basename (text[0]); + gtk_entry_set_text (GTK_ENTRY (fs->selection_entry), filename); + } } if (!did_recurse) ----
The inline patch is faulty, I should write a better one.
*** This bug has been marked as a duplicate of 6791 ***