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 *