evas/proxy - render the children of the proxy's source object when ther visibility is true.

This is not the perfect solution at this moment. This doesn't consider the cached clipper's visibility at all.
But at least this would be better than exist works. Should be improved.
This commit is contained in:
ChunEon Park 2013-07-28 20:24:46 +09:00
parent 55094c9eb0
commit e2c395f049
2 changed files with 19 additions and 1 deletions

View File

@ -1074,7 +1074,8 @@ evas_render_mapped(Evas_Public_Data *e, Evas_Object *eo_obj,
}
else
{
if ((obj->clip.clipees) || (obj->cur->have_clipees))
if (!evas_object_is_proxy_visible(eo_obj, obj) ||
(obj->clip.clipees) || (obj->cur->have_clipees))
{
RDI(level);
RD(" }\n");

View File

@ -150,6 +150,23 @@ evas_object_clippers_is_visible(Evas_Object *eo_obj EINA_UNUSED, Evas_Object_Pro
return 0;
}
static inline int
evas_object_is_proxy_visible(Evas_Object *eo_obj, Evas_Object_Protected_Data *obj)
{
if ((obj->cur->visible) &&
//FIXME: Check the cached clipper visible properly.
((obj->cur->clipper && obj->cur->clipper->cur->visible) ||
(obj->is_smart)) &&
((obj->cur->cache.clip.a > 0 && obj->cur->render_op == EVAS_RENDER_BLEND)
|| obj->cur->render_op != EVAS_RENDER_BLEND))
{
if (obj->func->is_visible)
return obj->func->is_visible(eo_obj);
return 1;
}
return 0;
}
static inline int
evas_object_is_in_output_rect(Evas_Object *eo_obj EINA_UNUSED, Evas_Object_Protected_Data *obj, int x, int y, int w, int h)
{