elm - icon - policy change. use theme defined std icon FIRST always

if you set a standard named icon - look in the theme first for it as
this should match the look of the theme, THEN look in the selected
icon theme. this fixes blank icons with selecting and icon theme in
many situations and fixes blank cons when "use elm icon theme" is
selected.

@fix
This commit is contained in:
Carsten Haitzler 2023-02-15 20:33:33 +00:00
parent 5af8b5e4bc
commit 156660a56b
1 changed files with 21 additions and 11 deletions

View File

@ -423,27 +423,37 @@ _internal_elm_icon_standard_set(Evas_Object *obj,
Eina_Bool *fdo)
{
char *tmp;
const char *stdtmp;
Eina_Bool ret = EINA_FALSE;
ELM_ICON_DATA_GET(obj, sd);
/* try locating the icon using the specified theme */
if (!strcmp(ELM_CONFIG_ICON_THEME_ELEMENTARY, elm_config_icon_theme_get()))
stdtmp = sd->stdicon;
sd->stdicon = NULL;
ret = _icon_standard_set(obj, name);
sd->stdicon = stdtmp;
if (ret && fdo) *fdo = EINA_FALSE;
if (!ret)
{
ret = _icon_standard_set(obj, name);
if (ret && fdo) *fdo = EINA_FALSE;
if (!ret)
/* try locating the icon using the specified theme */
if (!strcmp(ELM_CONFIG_ICON_THEME_ELEMENTARY, elm_config_icon_theme_get()))
{
ret = _icon_freedesktop_set(obj, "hicolor", name, _icon_size_min_get(obj));
ret = _icon_standard_set(obj, name);
if (ret && fdo) *fdo = EINA_FALSE;
if (!ret)
{
ret = _icon_freedesktop_set(obj, "hicolor", name, _icon_size_min_get(obj));
if (ret && fdo) *fdo = EINA_TRUE;
}
}
else
{
ret = _icon_freedesktop_set(obj, NULL, name, _icon_size_min_get(obj));
if (ret && fdo) *fdo = EINA_TRUE;
}
}
else
{
ret = _icon_freedesktop_set(obj, NULL, name, _icon_size_min_get(obj));
if (ret && fdo) *fdo = EINA_TRUE;
}
if (ret)
{