jpeg pushed a commit to branch master.

http://git.enlightenment.org/core/efl.git/commit/?id=df03631ef63ae0848828a25cc3caec3387e0917b

commit df03631ef63ae0848828a25cc3caec3387e0917b
Author: Jean-Philippe Andre <jp.an...@samsung.com>
Date:   Tue Apr 5 17:19:55 2016 +0900

    Evas smart: Mark all smart clippers as no_render
    
    This allows doing ugly things such as setting a clipper/mask
    on any smart object, without having to worry about seeing a
    white rectangle cover the whole screen.
    
    While the above scenario is not a great idea (bypass elementary in
    its handling of the clipper), having a big white rect covering the
    entire UI seems even worse.
    
    I wonder if elm objects shouldn't simply allow user clippers, and
    somehow manage them along with the smart object internal clipper.
---
 src/lib/evas/canvas/evas_object_smart.c         | 13 ++++++++++++-
 src/lib/evas/canvas/evas_object_smart_clipped.c |  1 +
 2 files changed, 13 insertions(+), 1 deletion(-)

diff --git a/src/lib/evas/canvas/evas_object_smart.c 
b/src/lib/evas/canvas/evas_object_smart.c
index 57c8801..461338d 100644
--- a/src/lib/evas/canvas/evas_object_smart.c
+++ b/src/lib/evas/canvas/evas_object_smart.c
@@ -682,9 +682,20 @@ EOLIAN static void
 _evas_object_smart_smart_no_render_set(Eo *eo_obj, Evas_Smart_Data *o 
EINA_UNUSED, Eina_Bool hide)
 {
    Evas_Object_Protected_Data *obj2;
+   Evas_Object_Smart_Clipped_Data *cso;
+   Evas_Object *cso_clipper;
+
+   if (eo_isa(eo_obj, EVAS_SMART_CLIPPED_CLASS))
+     cso = eo_data_scope_get(eo_obj, EVAS_SMART_CLIPPED_CLASS);
+   else
+     cso = evas_object_smart_data_get(eo_obj);
+   cso_clipper = cso ? cso->clipper : NULL;
 
    EINA_INLIST_FOREACH(evas_object_smart_members_get_direct(eo_obj), obj2)
-     evas_obj_no_render_set(obj2->object, hide);
+     {
+        if (cso_clipper != obj2->object)
+          evas_obj_no_render_set(obj2->object, hide);
+     }
 }
 
 EOLIAN static void
diff --git a/src/lib/evas/canvas/evas_object_smart_clipped.c 
b/src/lib/evas/canvas/evas_object_smart_clipped.c
index c066e03..8584223 100644
--- a/src/lib/evas/canvas/evas_object_smart_clipped.c
+++ b/src/lib/evas/canvas/evas_object_smart_clipped.c
@@ -63,6 +63,7 @@ evas_object_smart_clipped_smart_add(Evas_Object *eo_obj)
    evas_object_resize(cso->clipper, 200000, 200000);
    evas_object_pass_events_set(cso->clipper, 1);
    evas_object_hide(cso->clipper); /* show when have something clipped to it */
+   evas_obj_no_render_set(cso->clipper, 1);
 
    evas_object_smart_data_set(eo_obj, cso);
 }

-- 


Reply via email to