diff --git a/hal/ghalmount.c b/hal/ghalmount.c index e4f77e3..a7798af 100644 --- a/hal/ghalmount.c +++ b/hal/ghalmount.c @@ -388,6 +388,7 @@ do_update_from_hal (GHalMount *m) HalDevice *drive; char *name; const char *icon_name; + const char *icon_name_fallback; const char *drive_type; const char *drive_bus; gboolean drive_uses_removable_media; @@ -437,14 +438,14 @@ do_update_from_hal (GHalMount *m) /*g_warning ("drive_bus='%s'", drive_bus); */ /*g_warning ("drive_uses_removable_media=%d", drive_uses_removable_media); */ + icon_name_fallback = NULL; + if (strlen (volume_icon_from_hal) > 0) icon_name = volume_icon_from_hal; else if (strlen (icon_from_hal) > 0) icon_name = icon_from_hal; else if (is_audio_player) icon_name = "multimedia-player"; - else if (is_crypto || is_crypto_cleartext) - icon_name = "media-encrypted"; else if (strcmp (drive_type, "disk") == 0) { if (strcmp (drive_bus, "ide") == 0) @@ -475,6 +476,15 @@ do_update_from_hal (GHalMount *m) else icon_name = "drive-harddisk"; + /* + * for cryto media we need manual fallbacks + */ + if (is_crypto || is_crypto_cleartext) + { + icon_name_fallback = icon_name; + icon_name = "media-encrypted"; + } + if (strlen (volume_name_from_hal) > 0) name = g_strdup (volume_name_from_hal); @@ -507,9 +517,18 @@ do_update_from_hal (GHalMount *m) if (m->override_icon != NULL) m->icon = g_object_ref (m->override_icon); + else if (icon_name_fallback) + { + const char *names[2]; + + names[0] = icon_name; + names[1] = icon_name_fallback; + + m->icon = g_themed_icon_new_from_names ((char **) names, 2); + } else - m->icon = g_themed_icon_new_with_default_fallbacks (icon_name); - + m->icon = g_themed_icon_new_with_default_fallbacks (icon_name); + /* If this is a CD-ROM, begin searching for an icon specified in * autorun.inf. **/