summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChunEon Park <hermet@hermet.pe.kr>2013-07-28 20:24:46 +0900
committerChunEon Park <hermet@hermet.pe.kr>2013-07-28 20:24:46 +0900
commite2c395f0499c8b2ca4f3364bcde8c017affa4ea1 (patch)
tree9032ce7be207cf77713bbe84473c6b18a804faa9
parent55094c9eb0fc33cf82467c2ca9ba8f6b067f6d79 (diff)
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.
-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 */