File libslab-document-icon-missing.patch of Package libslab
diff -Npur libslab-old/libslab/document-tile.c libslab-new/libslab/document-tile.c
--- libslab-old/libslab/document-tile.c 2010-06-23 18:11:17.000000000 +0800
+++ libslab-new/libslab/document-tile.c 2010-06-23 18:10:12.000000000 +0800
@@ -434,10 +434,9 @@ load_image (DocumentTile *tile)
gchar *icon_id = NULL;
gboolean free_icon_id = TRUE;
GnomeDesktopThumbnailFactory *thumbnail_factory;
- GIcon *icon;
+ GIcon *icon = NULL;
libslab_checkpoint ("document-tile.c: load_image(): start for %s", TILE (tile)->uri);
-
if (priv->force_icon_name || ! priv->mime_type) {
if (priv->force_icon_name)
icon_id = priv->force_icon_name;
@@ -455,17 +454,26 @@ load_image (DocumentTile *tile)
if (! icon_id) {
icon = g_content_type_get_icon (priv->mime_type);
g_object_get (icon, "name", &icon_id, NULL);
-
- g_object_unref (icon);
}
exit:
- priv->image_is_broken = slab_load_image (
- GTK_IMAGE (NAMEPLATE_TILE (tile)->image), GTK_ICON_SIZE_DND, icon_id);
+ if (icon_id) {
+ priv->image_is_broken = slab_load_image (
+ GTK_IMAGE (NAMEPLATE_TILE (tile)->image), GTK_ICON_SIZE_DND, icon_id);
+ } else {
+ if (icon) {
+ priv->image_is_broken = TRUE;
+ gtk_image_set_from_gicon (GTK_IMAGE (NAMEPLATE_TILE (tile)->image), icon, GTK_ICON_SIZE_DND);
+ } else {
+ priv->image_is_broken = FALSE;
+ }
+ }
if (free_icon_id && icon_id)
g_free (icon_id);
+ if (icon)
+ g_object_unref (icon);
libslab_checkpoint ("document-tile.c: load_image(): end");
}