summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJean-Philippe Andre <jp.andre@samsung.com>2016-07-15 18:41:12 +0900
committerSimon Lees <sflees@suse.de>2016-07-18 17:28:20 +0930
commitf9146b6cdc8c677d4cfa76f2778740c288ead289 (patch)
tree14d4ffd55d21b7f9d0a238e53516acb0d217ccb4
parent12c061e336d96b1bb03a54abc4e6d2f3e17034bf (diff)
downloadefl-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.c23
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;