diff --git a/ChangeLog b/ChangeLog index f491ce250f..ce37ce0e6f 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,18 @@ +2008-06-15 Carlos Garnacho + + * gtk/gtkfilechooser.c (gtk_file_chooser_get_filename): Return full + path here as expected, not just the basename. + + * gtk/gtkfilechooserdefault.c + (gtk_file_chooser_default_update_current_folder): Ensure that we keep + a reference to file, since it can be destroyed when switching back to + browse mode. + + * gtk/gtkfilesystem.c (get_icon_for_special_directory): Removed, home + and desktop directories are dealt by the filechooser as normal files, + not volumes, so the icon for these is handled directly by GIO. + (_gtk_file_system_volume_render_icon): Update caller. + 2008-06-15 Matthias Clasen * gtk/gtkcellrendererpixbuf.c: Add a gicon property. diff --git a/gtk/gtkfilechooser.c b/gtk/gtkfilechooser.c index 2f089c581b..fa003eb27f 100644 --- a/gtk/gtkfilechooser.c +++ b/gtk/gtkfilechooser.c @@ -454,7 +454,7 @@ gtk_file_chooser_get_filename (GtkFileChooser *chooser) if (file) { - result = g_file_get_basename (file); + result = g_file_get_path (file); g_object_unref (file); } diff --git a/gtk/gtkfilechooserdefault.c b/gtk/gtkfilechooserdefault.c index b00473fd60..07b9eebf9a 100644 --- a/gtk/gtkfilechooserdefault.c +++ b/gtk/gtkfilechooserdefault.c @@ -6982,6 +6982,8 @@ gtk_file_chooser_default_update_current_folder (GtkFileChooser *chooser, profile_start ("start", NULL); + g_object_ref (file); + switch (impl->operation_mode) { case OPERATION_MODE_SEARCH: @@ -7001,6 +7003,7 @@ gtk_file_chooser_default_update_current_folder (GtkFileChooser *chooser, GTK_FILE_CHOOSER_ERROR_BAD_FILENAME, _("Cannot change to folder because it is not local")); + g_object_unref (file); profile_end ("end - not local", NULL); return FALSE; } @@ -7024,6 +7027,7 @@ gtk_file_chooser_default_update_current_folder (GtkFileChooser *chooser, data); set_busy_cursor (impl, TRUE); + g_object_unref (file); profile_end ("end", NULL); return TRUE; diff --git a/gtk/gtkfilesystem.c b/gtk/gtkfilesystem.c index c707957540..8112ffb93f 100644 --- a/gtk/gtkfilesystem.c +++ b/gtk/gtkfilesystem.c @@ -1662,50 +1662,6 @@ get_pixbuf_from_gicon (GIcon *icon, return pixbuf; } -static GIcon * -get_icon_for_special_directory (GFile *file) -{ - const gchar *special_dir; - GFile *special_file; - - special_dir = g_get_user_special_dir (G_USER_DIRECTORY_DESKTOP); - special_file = g_file_new_for_path (special_dir); - - if (g_file_equal (file, special_file)) - { - const char *names[] = { - "user-desktop", - "gnome-fs-desktop", - "folder", - "gtk-directory", - NULL - }; - g_object_unref (special_file); - return g_themed_icon_new_from_names ((char **)names, -1); - } - - g_object_unref (special_file); - special_dir = g_get_home_dir (); - special_file = g_file_new_for_path (special_dir); - - if (g_file_equal (file, special_file)) - { - const char *names[] = { - "user-home", - "gnome-fs-home", - "folder", - "gtk-directory", - NULL - }; - g_object_unref (special_file); - return g_themed_icon_new_from_names ((char **)names, -1); - } - - g_object_unref (special_file); - - return NULL; -} - GdkPixbuf * _gtk_file_system_volume_render_icon (GtkFileSystemVolume *volume, GtkWidget *widget, @@ -1724,23 +1680,13 @@ _gtk_file_system_volume_render_icon (GtkFileSystemVolume *volume, DEBUG ("volume_get_icon_name"); if (IS_ROOT_VOLUME (volume)) - icon = g_themed_icon_new_from_names ((char **)harddisk_icons, -1); + icon = g_themed_icon_new_from_names ((char **) harddisk_icons, -1); else if (G_IS_DRIVE (volume)) icon = g_drive_get_icon (G_DRIVE (volume)); else if (G_IS_VOLUME (volume)) icon = g_volume_get_icon (G_VOLUME (volume)); else if (G_IS_MOUNT (volume)) - { - GMount *mount = G_MOUNT (volume); - GFile *file; - - file = g_mount_get_root (mount); - icon = get_icon_for_special_directory (file); - g_object_unref (file); - - if (!icon) - icon = g_mount_get_icon (mount); - } + icon = g_mount_get_icon (G_MOUNT (volume)); if (!icon) return NULL;