diff -rNaud Thunar-1.8.1-OLD/thunar/thunar-icon-factory.c Thunar-1.8.1/thunar/thunar-icon-factory.c --- Thunar-1.8.1-OLD/thunar/thunar-icon-factory.c 2018-06-12 03:47:24.000000000 +0200 +++ Thunar-1.8.1/thunar/thunar-icon-factory.c 2018-08-06 00:42:05.485135360 +0200 @@ -792,7 +792,50 @@ return thunar_icon_factory_lookup_icon (factory, name, size, wants_default); } - +/** + * thunar_icon_factory_check_folder_icon: + * @file : a #ThunarFile. + * + * Return value: gchar pointer containing full path to + * folder.xxx image or NULL if no image found. + **/ +gchar * +thunar_icon_factory_check_folder_icon ( ThunarFile *file) +{ + + gchar *folder_icon; + gchar *path; + + path = g_file_get_path (thunar_file_get_file (file)); + + folder_icon = g_strconcat (path, "/", ".folder.jpg", NULL); + if ( g_file_test(folder_icon, G_FILE_TEST_EXISTS)) + { + g_free (path); + return folder_icon; + } + folder_icon = g_strconcat (path, "/", "folder.jpg", NULL); + if ( g_file_test(folder_icon, G_FILE_TEST_EXISTS)) + { + g_free (path); + return folder_icon; + } + folder_icon = g_strconcat (path, "/", ".folder.png", NULL); + if ( g_file_test(folder_icon, G_FILE_TEST_EXISTS)) + { + g_free (path); + return folder_icon; + } + folder_icon = g_strconcat (path, "/", "folder.png", NULL); + if ( g_file_test(folder_icon, G_FILE_TEST_EXISTS)) + { + g_free (path); + return folder_icon; + } + g_free (path); + folder_icon = NULL; + return folder_icon; +} /** * thunar_icon_factory_load_file_icon: @@ -819,8 +862,9 @@ GIcon *gicon; const gchar *icon_name; const gchar *custom_icon; + const gchar *folder_icon; ThunarIconStore *store; - + _thunar_return_val_if_fail (THUNAR_IS_ICON_FACTORY (factory), NULL); _thunar_return_val_if_fail (THUNAR_IS_FILE (file), NULL); _thunar_return_val_if_fail (icon_size > 0, NULL); @@ -836,7 +880,7 @@ return g_object_ref (store->icon); } - /* check if we have a custom icon for this file */ + /* check if we have a custom icon for this file */ custom_icon = thunar_file_get_custom_icon (file); if (custom_icon != NULL) { @@ -846,6 +890,21 @@ return icon; } + /* check if thumbnails are enabled and we have a "?folder.xxx" icon for this folder */ + if (thunar_icon_factory_get_show_thumbnail (factory, file) + && thunar_file_is_directory (file)) + { + folder_icon = thunar_icon_factory_check_folder_icon (file); + if (folder_icon != NULL) + { + /* try to load the icon */ + icon = thunar_icon_factory_lookup_icon (factory, folder_icon, icon_size, FALSE); + if (G_LIKELY (icon != NULL)) + return icon; + } + g_free(folder_icon); + } + /* check if thumbnails are enabled and we can display a thumbnail for the item */ if (thunar_icon_factory_get_show_thumbnail (factory, file) && thunar_file_is_regular (file))