0x0 smarts will no be rendered again - well children will be... but its still
authorraster <raster@7cbeb6ba-43b4-40fd-8cce-4c39aea84d33>
Thu, 19 Nov 2009 08:37:22 +0000 (08:37 +0000)
committerraster <raster@7cbeb6ba-43b4-40fd-8cce-4c39aea84d33>
Thu, 19 Nov 2009 08:37:22 +0000 (08:37 +0000)
bad form to do this. oddly - the desktop panning in e does this. need to check.

git-svn-id: svn+ssh://svn.enlightenment.org/var/svn/e/trunk/evas@43799 7cbeb6ba-43b4-40fd-8cce-4c39aea84d33

src/lib/canvas/evas_render.c
src/lib/include/evas_inline.x

index 393628e..d034da3 100644 (file)
@@ -126,8 +126,7 @@ static Eina_Bool
 _evas_render_has_map(Evas_Object *obj)
 {
    return ((!((obj->func->can_map) && (obj->func->can_map(obj)))) &&
-           ((obj->cur.map) && (obj->cur.map->count == 4) && 
-            (obj->cur.usemap)));
+           ((obj->cur.map) && (obj->cur.usemap)));
 }
 
 static Eina_Bool
@@ -258,6 +257,14 @@ _evas_render_phase1_object_process(Evas *e, Evas_Object *obj,
    RD("    [--- PROCESS [%p] '%s' active = %i, del = %i | %i %i %ix%i\n", obj, obj->type, is_active, obj->delete_me, obj->cur.geometry.x, obj->cur.geometry.y, obj->cur.geometry.w, obj->cur.geometry.h);
    if ((is_active) || (obj->delete_me != 0))
      eina_array_push(active_objects, obj);
+
+#ifdef REND_DGB
+   if (!is_active)
+     {
+        RDI(level);
+        RD("     [%p] vis: %i, cache.clip.vis: %i cache.clip.a: %i [%p]\n", obj, obj->cur.visible, obj->cur.cache.clip.visible, obj->cur.cache.clip.a, obj->func->is_visible);
+     }
+#endif   
    
    if (_evas_render_has_map(obj)) map = 1;
    
index 70a9beb..543a6a8 100644 (file)
@@ -81,7 +81,7 @@ static inline int
 evas_object_is_visible(Evas_Object *obj)
 {
    if ((obj->cur.visible) &&
-       (obj->cur.cache.clip.visible) &&
+       ((obj->cur.cache.clip.visible) || (obj->smart.smart)) &&
        (obj->cur.cache.clip.a > 0))
      {
        if (obj->func->is_visible)
@@ -119,12 +119,28 @@ evas_object_is_in_output_rect(Evas_Object *obj, int x, int y, int w, int h)
 static inline int
 evas_object_is_active(Evas_Object *obj)
 {
-   if ((evas_object_is_visible(obj) || evas_object_was_visible(obj)) &&
-       (evas_object_is_in_output_rect(obj, 0, 0, obj->layer->evas->output.w,
-                                     obj->layer->evas->output.h) ||
-       evas_object_was_in_output_rect(obj, 0, 0, obj->layer->evas->output.w,
-                                      obj->layer->evas->output.h)))
-     return 1;
+   if (evas_object_is_visible(obj) || evas_object_was_visible(obj))
+     {
+        if (obj->smart.smart)
+          {
+             int mapsmt = 0;
+             if (obj->smart.smart && (obj->cur.map && obj->cur.usemap)) mapsmt = 1;
+             if (!mapsmt) return 1;
+             if (evas_object_is_in_output_rect(obj, 0, 0, obj->layer->evas->output.w,
+                                               obj->layer->evas->output.h) ||
+                 evas_object_was_in_output_rect(obj, 0, 0, obj->layer->evas->output.w,
+                                                obj->layer->evas->output.h))
+               return 1;
+          }
+        else
+          {
+             if (evas_object_is_in_output_rect(obj, 0, 0, obj->layer->evas->output.w,
+                                               obj->layer->evas->output.h) ||
+                 evas_object_was_in_output_rect(obj, 0, 0, obj->layer->evas->output.w,
+                                                obj->layer->evas->output.h))
+               return 1;
+          }
+     }
    return 0;
 }