diff --git a/legacy/efreet/src/lib/efreet_icon.c b/legacy/efreet/src/lib/efreet_icon.c index e27d8aa3e5..c7945d57c9 100644 --- a/legacy/efreet/src/lib/efreet_icon.c +++ b/legacy/efreet/src/lib/efreet_icon.c @@ -673,7 +673,7 @@ efreet_icon_lookup_icon(Efreet_Icon_Theme *theme, const char *icon_name, char *icon = NULL, *tmp = NULL; Efreet_Icon_Theme_Directory *dir; double minimal_distance = INT_MAX; - unsigned int ret_size; + unsigned int ret_size = 0; if (!theme || (theme->paths == NULL) || !icon_name || !size) return NULL; @@ -762,13 +762,10 @@ efreet_icon_directory_size_match(Efreet_Icon_Theme_Directory *dir, if (dir->type == EFREET_ICON_SIZE_TYPE_FIXED) return (dir->size.normal == size); - if (dir->type == EFREET_ICON_SIZE_TYPE_SCALABLE) + if ((dir->type == EFREET_ICON_SIZE_TYPE_SCALABLE) || + (dir->type == EFREET_ICON_SIZE_TYPE_THRESHOLD)) return ((dir->size.min < size) && (size < dir->size.max)); - if (dir->type == EFREET_ICON_SIZE_TYPE_THRESHOLD) - return (((dir->size.normal - dir->size.threshold) < size) - && (size < (dir->size.normal + dir->size.threshold))); - return 0; } @@ -786,31 +783,21 @@ efreet_icon_directory_size_distance(Efreet_Icon_Theme_Directory *dir, if (dir->type == EFREET_ICON_SIZE_TYPE_FIXED) return (abs(dir->size.normal - size)); - if (dir->type == EFREET_ICON_SIZE_TYPE_SCALABLE) - { - if (size < dir->size.min) - return dir->size.min - size; - if (dir->size.max < size) - return size - dir->size.max; - - return 0; - } - - if (dir->type == EFREET_ICON_SIZE_TYPE_THRESHOLD) + if ((dir->type == EFREET_ICON_SIZE_TYPE_SCALABLE) || + (dir->type == EFREET_ICON_SIZE_TYPE_THRESHOLD)) { #ifdef STRICT_SPEC - if (size < (dir->size.normal - dir->size.threshold)) - return (dir->size.min - size); - if ((dir->size.normal + dir->size.threshold) < size) - return (size - dir->size.max); + if (size < dir->size.min) + return (dir->size.min - size); + if (dir->size.max < size) + return (size - dir->size.max); #else - if (size < (dir->size.normal - dir->size.threshold)) - return (dir->size.min / (double)size); - if ((dir->size.normal + dir->size.threshold) < size) - return (size / (double)dir->size.max); + if (size < dir->size.min) + return (dir->size.min / (double)size); + if (dir->size.max < size) + return (size / (double)dir->size.max); #endif - - return 0; + return 0; } return 0; @@ -1513,33 +1500,39 @@ efreet_icon_theme_directory_new(Efreet_Ini *ini, const char *name) dir->context = EFREET_ICON_THEME_CONTEXT_MIMETYPES; } + /* Threshold is fallback */ + dir->type = EFREET_ICON_SIZE_TYPE_THRESHOLD; + tmp = efreet_ini_string_get(ini, "Type"); if (tmp) - { + { if (!strcasecmp(tmp, "Fixed")) dir->type = EFREET_ICON_SIZE_TYPE_FIXED; else if (!strcasecmp(tmp, "Scalable")) dir->type = EFREET_ICON_SIZE_TYPE_SCALABLE; - - else if (!strcasecmp(tmp, "Threshold")) - dir->type = EFREET_ICON_SIZE_TYPE_THRESHOLD; } dir->size.normal = efreet_ini_int_get(ini, "Size"); - val = efreet_ini_int_get(ini, "MinSize"); - if (val < 0) dir->size.min = dir->size.normal; - else dir->size.min = val; - - val = efreet_ini_int_get(ini, "MaxSize"); - if (val < 0) dir->size.max = dir->size.normal; - else dir->size.max = val; - - val = efreet_ini_int_get(ini, "Threshold"); - if (val < 0) dir->size.threshold = 2; - else dir->size.threshold = val; + if (dir->type == EFREET_ICON_SIZE_TYPE_THRESHOLD) + { + val = efreet_ini_int_get(ini, "Threshold"); + if (val < 0) val = 2; + dir->size.max = dir->size.normal + val; + dir->size.min = dir->size.normal - val; + } + else + { + val = efreet_ini_int_get(ini, "MinSize"); + if (val < 0) dir->size.min = dir->size.normal; + else dir->size.min = val; + val = efreet_ini_int_get(ini, "MaxSize"); + if (val < 0) dir->size.max = dir->size.normal; + else dir->size.max = val; + } + return dir; }