evas: Fix cutout regions with transparent images

This should fix rendering issues with E theme and
transparent borders.

Fixes T3309
This commit is contained in:
Jean-Philippe Andre 2016-07-15 18:41:12 +09:00
parent f13b0a4d5f
commit 9248d3a5ac
1 changed files with 14 additions and 9 deletions

View File

@ -3046,22 +3046,27 @@ evas_object_image_get_opaque_rect(Evas_Object *eo_obj EINA_UNUSED,
{ {
Evas_Image_Data *o = type_private_data; 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; *x = obj->cur->geometry.x;
*y = obj->cur->geometry.y + o->cur->border.t; *y = obj->cur->geometry.y;
*w = obj->cur->geometry.w - (o->cur->border.l + o->cur->border.r); *w = obj->cur->geometry.w;
if (*w < 0) *w = 0; *h = obj->cur->geometry.h;
*h = obj->cur->geometry.h - (o->cur->border.t + o->cur->border.b); }
if (*h < 0) *h = 0; else if (o->cur->border.fill != EVAS_BORDER_FILL_SOLID)
{
*w = 0;
*h = 0;
} }
else else
{ {
*x = obj->cur->geometry.x + (o->cur->border.l * o->cur->border.scale); *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); *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; 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; if (*h < 0) *h = 0;
} }
return 1; return 1;