From 39a864d2f7d38bbb140513706820d83f9e206397 Mon Sep 17 00:00:00 2001 From: ChunEon Park Date: Fri, 26 Apr 2013 14:45:41 +0900 Subject: [PATCH] evas - fix the proxy object to not be clipped by source clipper --- ChangeLog | 4 ++++ NEWS | 2 ++ src/lib/evas/canvas/evas_render.c | 33 +++++++++++++++++++++---------- 3 files changed, 29 insertions(+), 10 deletions(-) diff --git a/ChangeLog b/ChangeLog index 99adcd74e8..f09bb59fa3 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,7 @@ +2013-04-26 ChunEon Park (Hermet) + + * Evas: Fix the proxy object to not be clipped by source clipper. + 2013-04-25 Tom Hacohen * Evas textblock: Fixed line size calculation when using multiple diff --git a/NEWS b/NEWS index e721947715..0eb982f7c3 100644 --- a/NEWS +++ b/NEWS @@ -256,3 +256,5 @@ Fixes: * Ecore-X: Fix selection parser to not overrun buffer read by using longs on 64bit. * Evas: Fix recursive proxy image rendering to just render black * Evas textblock: Fixed line size calculation when using multiple fonts. + * Evas: Fix the proxy object to not be clipped by source clipper. + diff --git a/src/lib/evas/canvas/evas_render.c b/src/lib/evas/canvas/evas_render.c index 80f1a79bd1..97083e4943 100644 --- a/src/lib/evas/canvas/evas_render.c +++ b/src/lib/evas/canvas/evas_render.c @@ -969,17 +969,28 @@ evas_render_mapped(Evas_Public_Data *e, Evas_Object *eo_obj, RD(" { evas_render_mapped(%p, %p, %p, %p, %i, %i, %i, %i)\n", e, obj, context, surface, off_x, off_y, mapped, level); if (mapped) { - if ((!evas_object_is_visible(eo_obj, obj)) || (obj->clip.clipees) || - (obj->cur->have_clipees)) + if (obj->clip.clipees || obj->cur->have_clipees) { - RDI(level); - RD(" }\n"); - return clean_them; + if (!proxy_render) + { + if (!evas_object_is_visible(eo_obj, obj)) + { + RDI(level); + RD(" }\n"); + return clean_them; + } + } + else + { + RDI(level); + RD(" }\n"); + return clean_them; + } } } - else if (!(((evas_object_is_active(eo_obj, obj) && (!obj->clip.clipees) && - (_evas_render_can_render(eo_obj, obj)))) - )) + else if (!(evas_object_is_active(eo_obj, obj) && + (!obj->clip.clipees) && + _evas_render_can_render(eo_obj, obj))) { RDI(level); RD(" }\n"); @@ -1263,7 +1274,8 @@ evas_render_mapped(Evas_Public_Data *e, Evas_Object *eo_obj, { RDI(level); - if (obj->cur->clipper) + //FIXME: Consider to clip by the proxy clipper. + if (!proxy_render && obj->cur->clipper) { RD(" clip: %i %i %ix%i [%i %i %ix%i]\n", obj->cur->cache.clip.x + off_x, @@ -1307,7 +1319,8 @@ evas_render_mapped(Evas_Public_Data *e, Evas_Object *eo_obj, } else { - if (obj->cur->clipper) + //FIXME: Consider to clip by the proxy clipper. + if (!proxy_render && obj->cur->clipper) { int x, y, w, h;