diff options
author | Carsten Haitzler (Rasterman) <raster@rasterman.com> | 2020-08-13 17:41:36 +0100 |
---|---|---|
committer | Carsten Haitzler (Rasterman) <raster@rasterman.com> | 2020-08-13 17:44:25 +0100 |
commit | 179ff71c8013ca9e11a547c6759a908e80129b51 (patch) | |
tree | d8204f6e574eb9907ab84ba6a1c32e829ab6f934 | |
parent | 8a723c1b83d11e5454d7ccd0ee4d41ab9a8d974c (diff) | |
download | efl-179ff71c8013ca9e11a547c6759a908e80129b51.tar.gz |
edje - calce - really respect max image size for img sets
when you have an image set for an image it wouldnt actually respect
image max size and not select something bigger than it.. now it will
@fix
-rw-r--r-- | src/lib/edje/edje_calc.c | 61 |
1 files changed, 28 insertions, 33 deletions
diff --git a/src/lib/edje/edje_calc.c b/src/lib/edje/edje_calc.c index 93a99254bf..af07a9bab5 100644 --- a/src/lib/edje/edje_calc.c +++ b/src/lib/edje/edje_calc.c @@ -491,6 +491,25 @@ _edje_part_description_find(Edje *ed, Edje_Real_Part *rp, const char *state_name } static int +_edje_image_set_fill(Edje_Real_Part_Set **eps, + Edje_Image_Directory_Set_Entry *entry, + Edje_Image_Directory_Set *set, + int id) +{ + if (eps) + { + if (!*eps) *eps = calloc(1, sizeof(Edje_Real_Part_Set)); + if (*eps) + { + (*eps)->entry = entry; + (*eps)->set = set; + (*eps)->id = id; + } + } + return entry->id; +} + +static int _edje_image_find(Evas_Object *obj, Edje *ed, Edje_Real_Part_Set **eps, Edje_Part_Description_Image *st, Edje_Part_Image_Id *imid) { @@ -517,9 +536,7 @@ _edje_image_find(Evas_Object *obj, Edje *ed, Edje_Real_Part_Set **eps, { if (((*eps)->entry->size.min.h <= h) && (h <= (*eps)->entry->size.max.h)) - { - return (*eps)->entry->id; - } + return (*eps)->entry->id; } } } @@ -530,46 +547,24 @@ _edje_image_find(Evas_Object *obj, Edje *ed, Edje_Real_Part_Set **eps, evas_image_max_size_get(evas_object_evas_get(obj), &maxw, &maxh); EINA_LIST_FOREACH(set->entries, l, entry) { + // skip images b + if ((entry->size.w > 0) && (entry->size.h > 0) && + ((w > entry->size.w) || (h > entry->size.h))) + continue; // skip images that exceed max size if ((maxw > 0) && (maxh > 0) && - (entry->size.w > 0) && (entry->size.h > 0) && - ((w > entry->size.w) || (h > entry->size.h))) + ((entry->size.w > maxw) || (entry->size.h > maxh))) continue; if ((entry->size.min.w <= w) && (w <= entry->size.max.w)) { if ((entry->size.min.h <= h) && (h <= entry->size.max.h)) - { - if (eps) - { - if (!*eps) *eps = calloc(1, sizeof(Edje_Real_Part_Set)); - if (*eps) - { - (*eps)->entry = entry; - (*eps)->set = set; - (*eps)->id = id; - } - } - return entry->id; - } + return _edje_image_set_fill(eps, entry, set, id); } } - + // nothing found so pick first - which shouldbe smallest entry = eina_list_data_get(set->entries); if (entry) - { - if (eps) - { - if (!*eps) - *eps = calloc(1, sizeof (Edje_Real_Part_Set)); - if (*eps) - { - (*eps)->entry = entry; - (*eps)->set = set; - (*eps)->id = id; - } - } - return entry->id; - } + return _edje_image_set_fill(eps, entry, set, id); return -1; } |