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");
 }
openSUSE Build Service is sponsored by