simotek pushed a commit to branch efl-1.17. http://git.enlightenment.org/core/efl.git/commit/?id=f9146b6cdc8c677d4cfa76f2778740c288ead289
commit f9146b6cdc8c677d4cfa76f2778740c288ead289 Author: Jean-Philippe Andre <jp.an...@samsung.com> Date: Fri Jul 15 18:41:12 2016 +0900 evas: Fix cutout regions with transparent images This should fix rendering issues with E theme and transparent borders. Fixes T3309 --- src/lib/evas/canvas/evas_object_image.c | 23 ++++++++++++++--------- 1 file changed, 14 insertions(+), 9 deletions(-) diff --git a/src/lib/evas/canvas/evas_object_image.c b/src/lib/evas/canvas/evas_object_image.c index dfeda99..7a8245c 100644 --- a/src/lib/evas/canvas/evas_object_image.c +++ b/src/lib/evas/canvas/evas_object_image.c @@ -4632,22 +4632,27 @@ evas_object_image_get_opaque_rect(Evas_Object *eo_obj EINA_UNUSED, { Evas_Image_Data *o = type_private_data; - if (o->cur->border.scale == 1.0) + if (!o->cur->has_alpha) { - *x = obj->cur->geometry.x + o->cur->border.l; - *y = obj->cur->geometry.y + o->cur->border.t; - *w = obj->cur->geometry.w - (o->cur->border.l + o->cur->border.r); - if (*w < 0) *w = 0; - *h = obj->cur->geometry.h - (o->cur->border.t + o->cur->border.b); - if (*h < 0) *h = 0; + *x = obj->cur->geometry.x; + *y = obj->cur->geometry.y; + *w = obj->cur->geometry.w; + *h = obj->cur->geometry.h; + } + else if (o->cur->border.fill != EVAS_BORDER_FILL_SOLID) + { + *w = 0; + *h = 0; } else { *x = obj->cur->geometry.x + (o->cur->border.l * o->cur->border.scale); *y = obj->cur->geometry.y + (o->cur->border.t * o->cur->border.scale); - *w = obj->cur->geometry.w - ((o->cur->border.l * o->cur->border.scale) + (o->cur->border.r * o->cur->border.scale)); + *w = obj->cur->geometry.w - ((o->cur->border.l * o->cur->border.scale) + + (o->cur->border.r * o->cur->border.scale)); if (*w < 0) *w = 0; - *h = obj->cur->geometry.h - ((o->cur->border.t * o->cur->border.scale) + (o->cur->border.b * o->cur->border.scale)); + *h = obj->cur->geometry.h - ((o->cur->border.t * o->cur->border.scale) + + (o->cur->border.b * o->cur->border.scale)); if (*h < 0) *h = 0; } return 1; --