diff --git a/legacy/efreet/src/lib/efreet_icon.c b/legacy/efreet/src/lib/efreet_icon.c index 60d7fec465..a952c56e03 100644 --- a/legacy/efreet/src/lib/efreet_icon.c +++ b/legacy/efreet/src/lib/efreet_icon.c @@ -531,14 +531,16 @@ efreet_icon_find_helper(Efreet_Icon_Theme *theme, efreet_icon_theme_cache_check(theme); - /* go no further if this theme is fake */ - if (theme->fake || !theme->valid) return NULL; /* limit recursion in finding themes and inherited themes to 256 levels */ if (recurse > 256) return NULL; recurse++; - value = efreet_icon_lookup_icon(theme, icon, size); + /* go no further if this theme is fake */ + if (theme->fake || !theme->valid) + value = NULL; + else + value = efreet_icon_lookup_icon(theme, icon, size); /* we didin't find the image check the inherited themes */ if (!value || (value == NON_EXISTING)) @@ -843,6 +845,17 @@ efreet_icon_fallback_icon(const char *icon_name) } } + EINA_LIST_FOREACH(xdg_dirs, l, dir) + { + snprintf(path, PATH_MAX, "%s/pixmaps", dir); + icon = efreet_icon_fallback_dir_scan(path, icon_name); + if (icon) + { + efreet_icon_cache_add(efreet_icon_find_theme_check(NULL), icon_name, 0, icon); + return icon; + } + } + icon = efreet_icon_fallback_dir_scan("/usr/share/pixmaps", icon_name); } @@ -1263,6 +1276,12 @@ efreet_icon_theme_dir_scan_all(const char *theme_name) efreet_icon_theme_dir_scan(path, theme_name); } + EINA_LIST_FOREACH(xdg_dirs, l, dir) + { + snprintf(path, sizeof(path), "%s/pixmaps", dir); + efreet_icon_theme_dir_scan(path, theme_name); + } + efreet_icon_theme_dir_scan("/usr/share/pixmaps", theme_name); }