summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCarsten Haitzler (Rasterman) <raster@rasterman.com>2016-05-25 11:45:16 +0900
committerCarsten Haitzler (Rasterman) <raster@rasterman.com>2016-05-25 11:45:16 +0900
commitecc556c7156362c2818b54bfb20f4c2d781b309d (patch)
treeb55a3811e88d1788c7351f722d579f6611155aac
parente682e7af55b8c1d4c5c5150a32af5f9d2e180ab0 (diff)
evas - use actual smart bounding box not obj geometry for render incl
render inclusion has bene used smart geom not bounding box from actual objects for inclusion in rendering. use the bounding box to be correct. @fix
-rw-r--r--src/lib/evas/canvas/evas_render.c23
1 files changed, 21 insertions, 2 deletions
diff --git a/src/lib/evas/canvas/evas_render.c b/src/lib/evas/canvas/evas_render.c
index 95015cb3dc..3a8322a980 100644
--- a/src/lib/evas/canvas/evas_render.c
+++ b/src/lib/evas/canvas/evas_render.c
@@ -2220,6 +2220,26 @@ _cb_always_call(Evas *eo_e, Evas_Callback_Type type, void *event_info)
2220 for (i = 0; i < freeze_num; i++) eo_event_freeze(eo_e); 2220 for (i = 0; i < freeze_num; i++) eo_event_freeze(eo_e);
2221} 2221}
2222 2222
2223static inline Eina_Bool
2224_is_obj_in_rect(Evas_Object *eo_obj, Evas_Object_Protected_Data *obj,
2225 int x, int y, int w, int h)
2226{
2227 if (obj->is_smart)
2228 {
2229 Evas_Coord_Rectangle rect;
2230
2231 evas_object_smart_bounding_box_get(eo_obj, &rect, NULL);
2232 if (RECTS_INTERSECT(x, y, w, h, rect.x, rect.y, rect.w, rect.h))
2233 return EINA_TRUE;
2234 }
2235 else
2236 {
2237 if (evas_object_is_in_output_rect(eo_obj, obj, x, y, w, h))
2238 return EINA_TRUE;
2239 }
2240 return EINA_FALSE;
2241}
2242
2223static Eina_Bool 2243static Eina_Bool
2224evas_render_updates_internal_loop(Evas *eo_e, Evas_Public_Data *e, 2244evas_render_updates_internal_loop(Evas *eo_e, Evas_Public_Data *e,
2225 void *surface, void *context, 2245 void *surface, void *context,
@@ -2295,8 +2315,7 @@ evas_render_updates_internal_loop(Evas *eo_e, Evas_Public_Data *e,
2295 RD(level, " OBJ: [%p", eo_obj); 2315 RD(level, " OBJ: [%p", eo_obj);
2296 IFRD(obj->name, 0, " '%s'", obj->name); 2316 IFRD(obj->name, 0, " '%s'", obj->name);
2297 RD(level, "] '%s' %i %i %ix%i\n", obj->type, obj->cur->geometry.x, obj->cur->geometry.y, obj->cur->geometry.w, obj->cur->geometry.h); 2317 RD(level, "] '%s' %i %i %ix%i\n", obj->type, obj->cur->geometry.x, obj->cur->geometry.y, obj->cur->geometry.w, obj->cur->geometry.h);
2298 if ((evas_object_is_in_output_rect(eo_obj, obj, ux - fx, uy - fy, uw, uh) || 2318 if ((_is_obj_in_rect(eo_obj, obj, ux - fx, uy - fy, uw, uh)) &&
2299 (obj->is_smart)) &&
2300 (!obj->clip.clipees) && 2319 (!obj->clip.clipees) &&
2301 (obj->cur->visible) && 2320 (obj->cur->visible) &&
2302 (!obj->delete_me) && 2321 (!obj->delete_me) &&