summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/lib/evas/canvas/evas_render.c3
-rw-r--r--src/lib/evas/include/evas_inline.x17
2 files changed, 19 insertions, 1 deletions
diff --git a/src/lib/evas/canvas/evas_render.c b/src/lib/evas/canvas/evas_render.c
index 6604d518f9..faec397fbb 100644
--- a/src/lib/evas/canvas/evas_render.c
+++ b/src/lib/evas/canvas/evas_render.c
@@ -1074,7 +1074,8 @@ evas_render_mapped(Evas_Public_Data *e, Evas_Object *eo_obj,
1074 } 1074 }
1075 else 1075 else
1076 { 1076 {
1077 if ((obj->clip.clipees) || (obj->cur->have_clipees)) 1077 if (!evas_object_is_proxy_visible(eo_obj, obj) ||
1078 (obj->clip.clipees) || (obj->cur->have_clipees))
1078 { 1079 {
1079 RDI(level); 1080 RDI(level);
1080 RD(" }\n"); 1081 RD(" }\n");
diff --git a/src/lib/evas/include/evas_inline.x b/src/lib/evas/include/evas_inline.x
index 31de720c2b..00c4f9ad3e 100644
--- a/src/lib/evas/include/evas_inline.x
+++ b/src/lib/evas/include/evas_inline.x
@@ -151,6 +151,23 @@ evas_object_clippers_is_visible(Evas_Object *eo_obj EINA_UNUSED, Evas_Object_Pro
151} 151}
152 152
153static inline int 153static inline int
154evas_object_is_proxy_visible(Evas_Object *eo_obj, Evas_Object_Protected_Data *obj)
155{
156 if ((obj->cur->visible) &&
157 //FIXME: Check the cached clipper visible properly.
158 ((obj->cur->clipper && obj->cur->clipper->cur->visible) ||
159 (obj->is_smart)) &&
160 ((obj->cur->cache.clip.a > 0 && obj->cur->render_op == EVAS_RENDER_BLEND)
161 || obj->cur->render_op != EVAS_RENDER_BLEND))
162 {
163 if (obj->func->is_visible)
164 return obj->func->is_visible(eo_obj);
165 return 1;
166 }
167 return 0;
168}
169
170static inline int
154evas_object_is_in_output_rect(Evas_Object *eo_obj EINA_UNUSED, Evas_Object_Protected_Data *obj, int x, int y, int w, int h) 171evas_object_is_in_output_rect(Evas_Object *eo_obj EINA_UNUSED, Evas_Object_Protected_Data *obj, int x, int y, int w, int h)
155{ 172{
156 /* assumes coords have been recalced */ 173 /* assumes coords have been recalced */