fix nasty uncaught clip + map bug! fix fix fix!!!!!
authorraster <raster@7cbeb6ba-43b4-40fd-8cce-4c39aea84d33>
Tue, 24 Aug 2010 08:14:46 +0000 (08:14 +0000)
committerraster <raster@7cbeb6ba-43b4-40fd-8cce-4c39aea84d33>
Tue, 24 Aug 2010 08:14:46 +0000 (08:14 +0000)
git-svn-id: svn+ssh://svn.enlightenment.org/var/svn/e/trunk/evas@51608 7cbeb6ba-43b4-40fd-8cce-4c39aea84d33

src/lib/canvas/evas_render.c

index 158e976..3d3d398 100644 (file)
@@ -754,6 +754,11 @@ evas_render_mapped(Evas *e, Evas_Object *obj, void *context, void *surface,
                                      obj->cur.geometry.y + off_y,
                                      obj->cur.geometry.w,
                                      obj->cur.geometry.h);
+                  RECTS_CLIP_TO_RECT(x, y, w, h,
+                                     obj->cur.cache.clip.x + off_x,
+                                     obj->cur.cache.clip.y + off_y,
+                                     obj->cur.cache.clip.w,
+                                     obj->cur.cache.clip.h);
                   e->engine.func->context_clip_set(e->engine.data.output,
                                                    ctx, x, y, w, h);
                   obj->func->render(obj, e->engine.data.output, ctx,
@@ -803,8 +808,16 @@ evas_render_mapped(Evas *e, Evas_Object *obj, void *context, void *surface,
                     }
                }
              else
-               obj->func->render(obj, e->engine.data.output, ctx,
-                                 surface, off_x, off_y);
+               {
+                  e->engine.func->context_clip_set(e->engine.data.output,
+                                                   ctx,
+                                                   obj->cur.cache.clip.x + off_x,
+                                                   obj->cur.cache.clip.y + off_y, 
+                                                   obj->cur.cache.clip.w,
+                                                   obj->cur.cache.clip.h);
+                  obj->func->render(obj, e->engine.data.output, ctx,
+                                    surface, off_x, off_y);
+               }
              e->engine.func->context_free(e->engine.data.output, ctx);
           }
         else