diff options
author | Jean-Philippe Andre <jp.andre@samsung.com> | 2016-07-15 18:41:12 +0900 |
---|---|---|
committer | Simon Lees <sflees@suse.de> | 2016-07-18 17:28:20 +0930 |
commit | f9146b6cdc8c677d4cfa76f2778740c288ead289 (patch) | |
tree | 14d4ffd55d21b7f9d0a238e53516acb0d217ccb4 | |
parent | 12c061e336d96b1bb03a54abc4e6d2f3e17034bf (diff) | |
download | efl-f9146b6cdc8c677d4cfa76f2778740c288ead289.tar.gz |
evas: Fix cutout regions with transparent images
This should fix rendering issues with E theme and
transparent borders.
Fixes T3309
-rw-r--r-- | src/lib/evas/canvas/evas_object_image.c | 23 |
1 files 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 dfeda99408..7a8245c5e7 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; |