evas - fix the proxy object to not be clipped by source clipper
authorChunEon Park <hermet@hermet.pe.kr>
Fri, 26 Apr 2013 05:45:41 +0000 (14:45 +0900)
committerChunEon Park <hermet@hermet.pe.kr>
Fri, 26 Apr 2013 05:45:41 +0000 (14:45 +0900)
ChangeLog
NEWS
src/lib/evas/canvas/evas_render.c

index 99adcd7..f09bb59 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,7 @@
+2013-04-26  ChunEon Park (Hermet)
+
+        * Evas: Fix the proxy object to not be clipped by source clipper.
+
 2013-04-25  Tom Hacohen
 
         * Evas textblock: Fixed line size calculation when using multiple
diff --git a/NEWS b/NEWS
index e721947..0eb982f 100644 (file)
--- a/NEWS
+++ b/NEWS
@@ -256,3 +256,5 @@ Fixes:
     * Ecore-X: Fix selection parser to not overrun buffer read by using longs on 64bit.
     * Evas: Fix recursive proxy image rendering to just render black
     * Evas textblock: Fixed line size calculation when using multiple fonts.
+    * Evas: Fix the proxy object to not be clipped by source clipper.
+
index 80f1a79..97083e4 100644 (file)
@@ -969,17 +969,28 @@ evas_render_mapped(Evas_Public_Data *e, Evas_Object *eo_obj,
    RD("      { evas_render_mapped(%p, %p,   %p, %p,   %i, %i,   %i,   %i)\n", e, obj, context, surface, off_x, off_y, mapped, level);
    if (mapped)
      {
-        if ((!evas_object_is_visible(eo_obj, obj)) || (obj->clip.clipees) ||
-            (obj->cur->have_clipees))
+        if (obj->clip.clipees || obj->cur->have_clipees)
           {
-             RDI(level);
-             RD("      }\n");
-             return clean_them;
+             if (!proxy_render)
+               {
+                  if (!evas_object_is_visible(eo_obj, obj))
+                    {
+                       RDI(level);
+                       RD("      }\n");
+                       return clean_them;
+                    }
+               }
+             else
+               {
+                  RDI(level);
+                  RD("      }\n");
+                  return clean_them;
+               }
           }
      }
-   else if (!(((evas_object_is_active(eo_obj, obj) && (!obj->clip.clipees) &&
-                (_evas_render_can_render(eo_obj, obj))))
-             ))
+   else if (!(evas_object_is_active(eo_obj, obj) &&
+              (!obj->clip.clipees) &&
+              _evas_render_can_render(eo_obj, obj)))
      {
         RDI(level);
         RD("      }\n");
@@ -1263,7 +1274,8 @@ evas_render_mapped(Evas_Public_Data *e, Evas_Object *eo_obj,
                {
                   RDI(level);
 
-                  if (obj->cur->clipper)
+                  //FIXME: Consider to clip by the proxy clipper.
+                  if (!proxy_render && obj->cur->clipper)
                     {
                        RD("        clip: %i %i %ix%i [%i %i %ix%i]\n",
                           obj->cur->cache.clip.x + off_x,
@@ -1307,7 +1319,8 @@ evas_render_mapped(Evas_Public_Data *e, Evas_Object *eo_obj,
           }
         else
           {
-             if (obj->cur->clipper)
+             //FIXME: Consider to clip by the proxy clipper.
+             if (!proxy_render && obj->cur->clipper)
                {
                   int x, y, w, h;