diff --git a/libnautilus-private/nautilus-file.c b/libnautilus-private/nautilus-file.c
index 2d2af1e..8ced3cc 100644
--- a/libnautilus-private/nautilus-file.c
+++ b/libnautilus-private/nautilus-file.c
@@ -4160,6 +4160,18 @@ get_default_file_icon (NautilusFileIconFlags flags)
 	}
 }
 
+static gboolean
+is_special_directory (NautilusFile *file)
+{
+	int i;
+	for (i = 0; i < G_USER_N_DIRECTORIES; i++) {
+		if (nautilus_file_is_user_special_directory (file, i)) {
+			return TRUE;
+		}
+	}
+	return FALSE;
+}
+
 NautilusIconInfo *
 nautilus_file_get_icon (NautilusFile *file,
 			int size,
@@ -4246,11 +4258,14 @@ nautilus_file_get_icon (NautilusFile *file,
 	}
 
 	if (file->details->is_thumbnailing &&
-	    flags & NAUTILUS_FILE_ICON_FLAGS_USE_THUMBNAILS)
+	    flags & NAUTILUS_FILE_ICON_FLAGS_USE_THUMBNAILS) {
 		gicon = g_themed_icon_new (ICON_NAME_THUMBNAIL_LOADING);
-	else
+	} else if (!(is_special_directory (file)) && (flags & NAUTILUS_FILE_ICON_FLAGS_NO_DEFAULT_FOLDER)) {
+		return NULL;
+	} else {
 		gicon = nautilus_file_get_gicon (file, flags);
-	
+	}
+
 	if (gicon) {
 		icon = nautilus_icon_info_lookup (gicon, size);
 		if (nautilus_icon_info_is_fallback (icon)) {
@@ -6812,6 +6827,39 @@ nautilus_file_is_directory (NautilusFile *file)
 	return nautilus_file_get_file_type (file) == G_FILE_TYPE_DIRECTORY;
 }
 
+/**
+ * nautilus_file_is_user_special_directory
+ *
+ * Check if this file is a special platform directory.
+ * @file: NautilusFile representing the file in question.
+ * @special_directory: GUserDirectory representing the type to test for
+ * 
+ * Returns: TRUE if @file is a special directory of the given kind.
+ */
+gboolean
+nautilus_file_is_user_special_directory (NautilusFile *file,
+					 GUserDirectory special_directory)
+{
+	gboolean is_special_dir;
+	const gchar *special_dir;
+
+	special_dir = g_get_user_special_dir (special_directory);
+	is_special_dir = FALSE;
+
+	if (special_dir) {
+		GFile *loc;
+		GFile *special_gfile;
+
+		loc = nautilus_file_get_location (file);
+		special_gfile = g_file_new_for_path (special_dir);
+		is_special_dir = g_file_equal (loc, special_gfile);
+		g_object_unref (special_gfile);
+		g_object_unref (loc);
+	}
+
+	return is_special_dir;
+}
+
 gboolean
 nautilus_file_is_archive (NautilusFile *file)
 {
diff --git a/libnautilus-private/nautilus-file.h b/libnautilus-private/nautilus-file.h
index 952a09b..19ca14d 100644
--- a/libnautilus-private/nautilus-file.h
+++ b/libnautilus-private/nautilus-file.h
@@ -78,7 +78,8 @@ typedef enum {
 	NAUTILUS_FILE_ICON_FLAGS_FOR_DRAG_ACCEPT = (1<<3),
 	NAUTILUS_FILE_ICON_FLAGS_FOR_OPEN_FOLDER = (1<<4),
 	/* whether the thumbnail size must match the display icon size */
-	NAUTILUS_FILE_ICON_FLAGS_FORCE_THUMBNAIL_SIZE = (1<<5)
+	NAUTILUS_FILE_ICON_FLAGS_FORCE_THUMBNAIL_SIZE = (1<<5),
+	NAUTILUS_FILE_ICON_FLAGS_NO_DEFAULT_FOLDER = (1<<6)
 } NautilusFileIconFlags;	
 
 /* Emblems sometimes displayed for NautilusFiles. Do not localize. */ 
@@ -183,6 +184,8 @@ gboolean                nautilus_file_is_broken_symbolic_link           (Nautilu
 gboolean                nautilus_file_is_nautilus_link                  (NautilusFile                   *file);
 gboolean                nautilus_file_is_executable                     (NautilusFile                   *file);
 gboolean                nautilus_file_is_directory                      (NautilusFile                   *file);
+gboolean                nautilus_file_is_user_special_directory         (NautilusFile                   *file,
+									 GUserDirectory                 special_directory);
 gboolean		nautilus_file_is_archive			(NautilusFile			*file);
 gboolean                nautilus_file_is_in_trash                       (NautilusFile                   *file);
 gboolean                nautilus_file_is_in_desktop                     (NautilusFile                   *file);
diff --git a/src/nautilus-pathbar.c b/src/nautilus-pathbar.c
index 4de95f8..ce181dc 100644
--- a/src/nautilus-pathbar.c
+++ b/src/nautilus-pathbar.c
@@ -1145,14 +1145,6 @@ button_clicked_cb (GtkWidget *button,
 }
 
 static NautilusIconInfo *
-get_custom_user_icon_info (ButtonData *button_data)
-{
-
-	return nautilus_file_get_icon (button_data->file, 48,
-				       NAUTILUS_FILE_ICON_FLAGS_USE_THUMBNAILS | NAUTILUS_FILE_ICON_FLAGS_IGNORE_VISITING);
-}
-
-static NautilusIconInfo *
 get_type_icon_info (ButtonData *button_data)
 {
 	switch (button_data->type)
@@ -1170,12 +1162,11 @@ get_type_icon_info (ButtonData *button_data)
 								    NAUTILUS_PATH_BAR_ICON_SIZE);
 
                 case NORMAL_BUTTON:
-			if (button_data->is_base_dir) {
-				return nautilus_file_get_icon (button_data->file,
-							       NAUTILUS_PATH_BAR_ICON_SIZE,
-							       NAUTILUS_FILE_ICON_FLAGS_NONE);
-			}
-
+			return nautilus_file_get_icon (button_data->file,
+						       NAUTILUS_PATH_BAR_ICON_SIZE,
+						       NAUTILUS_FILE_ICON_FLAGS_USE_THUMBNAILS |
+						       NAUTILUS_FILE_ICON_FLAGS_IGNORE_VISITING |
+						       NAUTILUS_FILE_ICON_FLAGS_NO_DEFAULT_FOLDER);
 	    	default:
 			return NULL;
         }
@@ -1265,10 +1256,7 @@ nautilus_path_bar_update_button_appearance (ButtonData *button_data)
 			gtk_image_set_from_pixbuf (GTK_IMAGE (button_data->image), button_data->custom_icon);  
 			gtk_widget_show (GTK_WIDGET (button_data->image));
 		} else {
-			icon_info = get_custom_user_icon_info (button_data);
-			if (icon_info == NULL) {
-				icon_info = get_type_icon_info (button_data);
-			}
+			icon_info = get_type_icon_info (button_data);
 
 			pixbuf = NULL;
 
