File nautilus-desktop-file-fallback-icons.diff of Package nautilus

2005-10-06  Federico Mena Quintero  <federico@ximian.com>

	* libnautilus-private/nautilus-link-desktop-file.c
	(nautilus_link_desktop_file_get_link_icon_from_desktop): If the
	.desktop file doesn't have an Icon property, fall back to some
	reasonable icons depending on the type of the .desktop file.

Index: nautilus-link-desktop-file.c
================================================================================
--- nautilus-2.12.1/libnautilus-private/nautilus-link-desktop-file.c
+++ nautilus-2.12.1/libnautilus-private/nautilus-link-desktop-file.c
@@ -285,6 +285,7 @@
 {
 	char *icon_uri;
 	const char *icon;
+	GnomeDesktopItemType desktop_type;
 
 	icon_uri = g_strdup (gnome_desktop_item_get_string (desktop_file, "X-Nautilus-Icon"));
 	if (icon_uri != NULL) {
@@ -292,7 +293,34 @@
 	}
 
 	icon = gnome_desktop_item_get_string (desktop_file, GNOME_DESKTOP_ITEM_ICON);
-	return g_strdup (icon);
+	if (icon != NULL) {
+		return g_strdup (icon);
+	}
+
+	desktop_type = gnome_desktop_item_get_entry_type (desktop_file);
+	switch (desktop_type) {
+	case GNOME_DESKTOP_ITEM_TYPE_APPLICATION:
+		return g_strdup ("gnome-fs-executable");
+
+	case GNOME_DESKTOP_ITEM_TYPE_LINK:
+		return g_strdup ("gnome-dev-symlink");
+
+	case GNOME_DESKTOP_ITEM_TYPE_FSDEVICE:
+		return g_strdup ("gnome-dev-harddisk");
+
+	case GNOME_DESKTOP_ITEM_TYPE_DIRECTORY:
+		return g_strdup ("gnome-fs-directory");
+
+	case GNOME_DESKTOP_ITEM_TYPE_SERVICE:
+	case GNOME_DESKTOP_ITEM_TYPE_SERVICE_TYPE:
+		return g_strdup ("gnome-fs-web");
+
+	default:
+		return g_strdup ("gnome-fs-regular");
+	}
+
+	g_assert_not_reached ();
+	return NULL;
 }
 
 char *
openSUSE Build Service is sponsored by