From: Joerg Sonnenberger <joerg@britannica.bec.de>

Subject: [E-devel] [PATCH] efreet and icon loading

Hi all,
attached patch fixes two issues:

(1) If using a non-default prefix, share/pixmaps should be checked
before the hard-coded /usr/share/pixmaps fallback. This basically
restores symmetry with the other cases like share/icons.

(2) Do a fallback lookup if the theme is not valid or faked. This can
happen if only hicolor is installed and e17 decides to use Tango.
Before, e.g. gimp's icon wasn't picked up because the short cut was too
early.



SVN revision: 51124
This commit is contained in:
Joerg Sonnenberger 2010-08-15 03:01:55 +00:00 committed by Carsten Haitzler
parent df0903779c
commit 607e5d4b9b
1 changed files with 22 additions and 3 deletions

View File

@ -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);
}