SF.net SVN: geany:[5374] trunk

eht16 at users.sourceforge.net eht16 at xxxxx
Sun Nov 7 15:24:26 UTC 2010


Revision: 5374
          http://geany.svn.sourceforge.net/geany/?rev=5374&view=rev
Author:   eht16
Date:     2010-11-07 15:24:26 +0000 (Sun, 07 Nov 2010)

Log Message:
-----------
Use non-GIO mime-type icon lookup if GIO lookup fails.

Modified Paths:
--------------
    trunk/ChangeLog
    trunk/src/ui_utils.c

Modified: trunk/ChangeLog
===================================================================
--- trunk/ChangeLog	2010-11-07 15:06:15 UTC (rev 5373)
+++ trunk/ChangeLog	2010-11-07 15:24:26 UTC (rev 5374)
@@ -5,6 +5,8 @@
    is available and to be used regardless of the USE_GIO_FILEMON flag.
  * wscript:
    Fix installation of template files.
+ * src/ui_utils.c:
+   Use non-GIO mime-type icon lookup if GIO lookup fails.
 
 
 2010-11-07  Nick Treleaven  <nick(dot)treleaven(at)btinternet(dot)com>

Modified: trunk/src/ui_utils.c
===================================================================
--- trunk/src/ui_utils.c	2010-11-07 15:06:15 UTC (rev 5373)
+++ trunk/src/ui_utils.c	2010-11-07 15:24:26 UTC (rev 5374)
@@ -2472,33 +2472,39 @@
 	{
 		g_return_val_if_reached(NULL);
 	}
-	theme = gtk_icon_theme_get_default();
 	ctype = g_content_type_from_mime_type(mime_type);
-	gicon = g_content_type_get_icon(ctype);
-	info = gtk_icon_theme_lookup_by_gicon(theme, gicon, real_size, 0);
-	g_object_unref(gicon);
-	g_free(ctype);
+	if (ctype != NULL)
+	{
+		gicon = g_content_type_get_icon(ctype);
+		theme = gtk_icon_theme_get_default();
+		info = gtk_icon_theme_lookup_by_gicon(theme, gicon, real_size, 0);
+		g_object_unref(gicon);
+		g_free(ctype);
 
-	if (info)
+		if (info != NULL)
+		{
+			icon = gtk_icon_info_load_icon(info, NULL);
+			gtk_icon_info_free(info);
+		}
+	}
+#endif
+	/* fallback for builds without GIO or if icon lookup failed, like it might happen on Windows */
+	if (icon == NULL)
 	{
-		icon = gtk_icon_info_load_icon(info, NULL);
-		gtk_icon_info_free(info);
-	}
-#else
-	const gchar *stock_id = GTK_STOCK_FILE;
-	GtkIconSet *icon_set;
+		const gchar *stock_id = GTK_STOCK_FILE;
+		GtkIconSet *icon_set;
 
-	if (strstr(mime_type, "directory"))
-		stock_id = GTK_STOCK_DIRECTORY;
+		if (strstr(mime_type, "directory"))
+			stock_id = GTK_STOCK_DIRECTORY;
 
-	icon_set = gtk_icon_factory_lookup_default(stock_id);
-	if (icon_set)
-	{
-		icon = gtk_icon_set_render_icon(icon_set, gtk_widget_get_default_style(),
-			gtk_widget_get_default_direction(),
-			GTK_STATE_NORMAL, size, NULL, NULL);
+		icon_set = gtk_icon_factory_lookup_default(stock_id);
+		if (icon_set)
+		{
+			icon = gtk_icon_set_render_icon(icon_set, gtk_widget_get_default_style(),
+				gtk_widget_get_default_direction(),
+				GTK_STATE_NORMAL, size, NULL, NULL);
+		}
 	}
-#endif
 	return icon;
 }
 


This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.



More information about the Commits mailing list