diff --git a/src/lib/evas/canvas/evas_object_image.c b/src/lib/evas/canvas/evas_object_image.c index 8f40147c61..36babe3f8e 100644 --- a/src/lib/evas/canvas/evas_object_image.c +++ b/src/lib/evas/canvas/evas_object_image.c @@ -2489,6 +2489,8 @@ evas_object_image_is_opaque(Evas_Object *eo_obj EINA_UNUSED, return o->cur->opaque; if (!o->engine_data) return o->cur->opaque; + if (o->has_filter) + return o->cur->opaque; // FIXME: use proxy if (o->cur->source) diff --git a/src/lib/evas/canvas/evas_object_rectangle.c b/src/lib/evas/canvas/evas_object_rectangle.c index 122d755176..d394546351 100644 --- a/src/lib/evas/canvas/evas_object_rectangle.c +++ b/src/lib/evas/canvas/evas_object_rectangle.c @@ -362,7 +362,7 @@ evas_object_rectangle_is_opaque(Evas_Object *eo_obj EINA_UNUSED, return 1; if (obj->cur->render_op != EVAS_RENDER_BLEND) return 0; - return 1; + return (obj->cur->cache.clip.a == 255) ? 1 : 0; } static int diff --git a/src/lib/evas/include/evas_inline.x b/src/lib/evas/include/evas_inline.x index 6255614c81..510077c759 100644 --- a/src/lib/evas/include/evas_inline.x +++ b/src/lib/evas/include/evas_inline.x @@ -79,9 +79,6 @@ evas_object_is_opaque(Evas_Object *eo_obj, Evas_Object_Protected_Data *obj) if ((obj->cur->clipper && obj->cur->clipper->mask->is_mask) || (obj->clip.mask)) return 0; - /* Non masked snapshot are supposed to be opaque */ - if (obj->cur->snapshot) - return 1; if (obj->func->is_opaque) return obj->func->is_opaque(eo_obj, obj, obj->private_data); return 1;