evas canvas: fix broken proxy clipping.
authorHermet Park <hermet@hermet.pe.kr>
Thu, 23 Jun 2016 15:48:34 +0000 (00:48 +0900)
committerHermet Park <hermet@hermet.pe.kr>
Thu, 23 Jun 2016 15:48:34 +0000 (00:48 +0900)
Origin of clipper's clipper won't be transformed to derivative space.
So it needs to transform the coordinate additionally.

src/lib/evas/canvas/evas_render.c

index 9517ef1..74082cb 100644 (file)
@@ -1242,8 +1242,11 @@ _proxy_context_clip(Evas_Public_Data *evas, void *ctx, Evas_Proxy_Render_Data *p
    /* stop if we found the source object's clipper */
    if (clipper == proxy_render_data->src_obj->cur->clipper) return EINA_TRUE;
 
-   /* recurse to the clipper itself */
-   return _proxy_context_clip(evas, ctx, proxy_render_data, clipper, off_x, off_y);
+   /* recurse to the clipper itself.
+    * origin of clipper's clipper won't be transformed to derivative space. */
+   return _proxy_context_clip(evas, ctx, proxy_render_data, clipper,
+                              (off_x - proxy_render_data->src_obj->cur->geometry.x),
+                              (off_y - proxy_render_data->src_obj->cur->geometry.y));
 }
 
 static void