forked from enlightenment/efl
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:
parent
df0903779c
commit
607e5d4b9b
|
@ -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);
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue