summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJean-Philippe Andre <jp.andre@samsung.com>2017-09-06 10:31:08 +0900
committerJean-Philippe Andre <jp.andre@samsung.com>2017-09-13 09:57:05 +0900
commit71e122424e6ce7594fff25b27a40c92d42a11b10 (patch)
tree165e1b694a8c114d313468dfd4fc98591e6ad949
parent67798ca8636c362d947f33bb793ab9480d0bb3aa (diff)
evas: Move all overrides to std smart object
- color_set - visible_set - position_set - no_render_set - member_add, member_del - group_add, group_del - clip_set Notes: - Widget overrides color_set without calling super() which means that color_get() returns a different value. Also any subsequent child object add will not inherit the color. - Smart clipped objects also don't call super. This patch changes that, but only for smart clipped objects created through EO. This shouldn't have any side effect.
-rw-r--r--src/lib/evas/canvas/efl_canvas_group.eo5
-rw-r--r--src/lib/evas/canvas/efl_canvas_group_clipped.eo7
-rw-r--r--src/lib/evas/canvas/evas_object_smart.c173
-rw-r--r--src/lib/evas/canvas/evas_object_smart_clipped.c63
4 files changed, 138 insertions, 110 deletions
diff --git a/src/lib/evas/canvas/efl_canvas_group.eo b/src/lib/evas/canvas/efl_canvas_group.eo
index cad0ff5..583ea4f 100644
--- a/src/lib/evas/canvas/efl_canvas_group.eo
+++ b/src/lib/evas/canvas/efl_canvas_group.eo
@@ -52,6 +52,7 @@ class Efl.Canvas.Group (Efl.Canvas.Object)
52 ]] 52 ]]
53 legacy: evas_object_smart_calculate; 53 legacy: evas_object_smart_calculate;
54 } 54 }
55 /* FIXME: children -> members? */
55 group_children_iterate @const { 56 group_children_iterate @const {
56 [[Returns an iterator over the children of this object, that are 57 [[Returns an iterator over the children of this object, that are
57 canvas objects. 58 canvas objects.
@@ -103,6 +104,10 @@ class Efl.Canvas.Group (Efl.Canvas.Object)
103 Efl.Object.constructor; 104 Efl.Object.constructor;
104 Efl.Object.destructor; 105 Efl.Object.destructor;
105 Efl.Object.debug_name_override; 106 Efl.Object.debug_name_override;
107 Efl.Gfx.color { set; }
108 Efl.Gfx.visible { set; }
109 Efl.Gfx.position { set; }
110 Efl.Canvas.Object.clip { set; }
106 Efl.Canvas.Object.no_render { set; } 111 Efl.Canvas.Object.no_render { set; }
107 Efl.Canvas.Object.paragraph_direction { get; set; } 112 Efl.Canvas.Object.paragraph_direction { get; set; }
108 } 113 }
diff --git a/src/lib/evas/canvas/efl_canvas_group_clipped.eo b/src/lib/evas/canvas/efl_canvas_group_clipped.eo
index 4a7b66e..2f995f9 100644
--- a/src/lib/evas/canvas/efl_canvas_group_clipped.eo
+++ b/src/lib/evas/canvas/efl_canvas_group_clipped.eo
@@ -6,12 +6,5 @@ abstract Efl.Canvas.Group.Clipped (Efl.Canvas.Group)
6 data: null; 6 data: null;
7 implements { 7 implements {
8 Efl.Object.constructor; 8 Efl.Object.constructor;
9 Efl.Gfx.color { set; }
10 Efl.Gfx.visible { set; }
11 Efl.Gfx.position { set; }
12 Efl.Canvas.Object.clip { set; }
13 Efl.Canvas.Object.no_render { set; }
14 Efl.Canvas.Group.group_member_del;
15 Efl.Canvas.Group.group_member_add;
16 } 9 }
17} 10}
diff --git a/src/lib/evas/canvas/evas_object_smart.c b/src/lib/evas/canvas/evas_object_smart.c
index cf6d025..b28b25f 100644
--- a/src/lib/evas/canvas/evas_object_smart.c
+++ b/src/lib/evas/canvas/evas_object_smart.c
@@ -50,6 +50,7 @@ struct _Evas_Smart_Data
50 Eina_Bool group_del_called : 1; 50 Eina_Bool group_del_called : 1;
51 Eina_Bool unclipped : 1; /* If true, NOT a smart_clipped object */ 51 Eina_Bool unclipped : 1; /* If true, NOT a smart_clipped object */
52 Eina_Bool data_nofree : 1; /* If true, do NOT free the data */ 52 Eina_Bool data_nofree : 1; /* If true, do NOT free the data */
53 Eina_Bool constructed : 1; /* constructor finished */
53}; 54};
54 55
55typedef struct 56typedef struct
@@ -78,7 +79,6 @@ _eo_evas_smart_cb(void *data, const Efl_Event *event)
78} 79}
79 80
80/* private methods for smart objects */ 81/* private methods for smart objects */
81static inline void evas_object_smart_init(Evas_Object *eo_obj);
82static void evas_object_smart_render(Evas_Object *eo_obj, 82static void evas_object_smart_render(Evas_Object *eo_obj,
83 Evas_Object_Protected_Data *obj, 83 Evas_Object_Protected_Data *obj,
84 void *type_private_data, 84 void *type_private_data,
@@ -125,6 +125,13 @@ static const Evas_Object_Func object_func =
125 NULL 125 NULL
126}; 126};
127 127
128/* helpers */
129static inline Evas_Object *
130_smart_clipper_get(Evas_Smart_Data *o)
131{
132 Evas_Object_Smart_Clipped_Data *cso = (!o->unclipped) ? o->data : NULL;
133 return cso ? cso->clipper : NULL;
134}
128 135
129/* public funcs */ 136/* public funcs */
130EAPI void 137EAPI void
@@ -287,6 +294,17 @@ _efl_canvas_group_group_member_add(Eo *smart_obj, Evas_Smart_Data *o, Evas_Objec
287 if (!smart->is_frame_top && (smart->is_frame != obj->is_frame)) 294 if (!smart->is_frame_top && (smart->is_frame != obj->is_frame))
288 efl_canvas_object_is_frame_object_set(eo_obj, smart->is_frame); 295 efl_canvas_object_is_frame_object_set(eo_obj, smart->is_frame);
289 296
297 if (!o->unclipped && o->constructed)
298 {
299 Evas_Object *clipper = _smart_clipper_get(o);
300 Eina_Bool had_clippees = efl_canvas_object_clipees_has(clipper);
301
302 EINA_SAFETY_ON_NULL_RETURN(clipper);
303 efl_canvas_object_clip_set(eo_obj, clipper);
304 if (!had_clippees && smart->cur->visible)
305 efl_gfx_visible_set(clipper, 1);
306 }
307
290 evas_object_change(eo_obj, obj); 308 evas_object_change(eo_obj, obj);
291 evas_object_mapped_clip_across_mark(eo_obj, obj); 309 evas_object_mapped_clip_across_mark(eo_obj, obj);
292 if (smart->smart.smart && smart->smart.smart->smart_class->member_add) 310 if (smart->smart.smart && smart->smart.smart->smart_class->member_add)
@@ -308,16 +326,29 @@ EOLIAN static void
308_efl_canvas_group_group_member_del(Eo *smart_obj, Evas_Smart_Data *_pd EINA_UNUSED, Evas_Object *eo_obj) 326_efl_canvas_group_group_member_del(Eo *smart_obj, Evas_Smart_Data *_pd EINA_UNUSED, Evas_Object *eo_obj)
309{ 327{
310 Evas_Object_Protected_Data *obj = efl_data_scope_safe_get(eo_obj, EFL_CANVAS_OBJECT_CLASS); 328 Evas_Object_Protected_Data *obj = efl_data_scope_safe_get(eo_obj, EFL_CANVAS_OBJECT_CLASS);
311 Evas_Smart_Data *member_o; 329 Evas_Object_Protected_Data *smart;
330 Evas_Smart_Data *member_o, *o;
312 331
313 if (!obj || !obj->smart.parent) return; 332 if (!obj || !obj->smart.parent) return;
314 333
315 evas_object_async_block(obj); 334 evas_object_async_block(obj);
316 Evas_Object_Protected_Data *smart = efl_data_scope_get(smart_obj, EFL_CANVAS_OBJECT_CLASS); 335
336 smart = efl_data_scope_get(smart_obj, EFL_CANVAS_OBJECT_CLASS);
317 if (smart->smart.smart && smart->smart.smart->smart_class->member_del) 337 if (smart->smart.smart && smart->smart.smart->smart_class->member_del)
318 smart->smart.smart->smart_class->member_del(smart_obj, eo_obj); 338 smart->smart.smart->smart_class->member_del(smart_obj, eo_obj);
319 339
320 Evas_Smart_Data *o = efl_data_scope_get(smart_obj, MY_CLASS); 340 o = efl_data_scope_get(smart_obj, MY_CLASS);
341
342 if (!o->unclipped)
343 {
344 Evas_Object *clipper = _smart_clipper_get(o);
345
346 EINA_SAFETY_ON_NULL_RETURN(clipper);
347 efl_canvas_object_clip_set(eo_obj, NULL);
348 if (!efl_canvas_object_clipees_has(clipper))
349 efl_gfx_visible_set(clipper, 0);
350 }
351
321 o->contained = eina_inlist_remove(o->contained, EINA_INLIST_GET(obj)); 352 o->contained = eina_inlist_remove(o->contained, EINA_INLIST_GET(obj));
322 o->member_count--; 353 o->member_count--;
323 obj->smart.parent = NULL; 354 obj->smart.parent = NULL;
@@ -526,11 +557,18 @@ evas_object_smart_members_get_direct(const Evas_Object *eo_obj)
526 557
527static void 558static void
528_efl_canvas_group_group_members_all_del_internal(Evas_Smart_Data *o) 559_efl_canvas_group_group_members_all_del_internal(Evas_Smart_Data *o)
529{; 560{
530 Evas_Object_Protected_Data *memobj; 561 Evas_Object_Protected_Data *memobj;
531 Eina_Inlist *itrn; 562 Eina_Inlist *itrn;
563 Eo *eo_clipper;
564
565 eo_clipper = _smart_clipper_get(o);
532 EINA_INLIST_FOREACH_SAFE(o->contained, itrn, memobj) 566 EINA_INLIST_FOREACH_SAFE(o->contained, itrn, memobj)
533 efl_del(memobj->object); 567 {
568 if (memobj->object != eo_clipper)
569 efl_del(memobj->object);
570 }
571 efl_del(eo_clipper);
534 o->group_del_called = EINA_TRUE; 572 o->group_del_called = EINA_TRUE;
535} 573}
536 574
@@ -625,15 +663,25 @@ evas_object_smart_add(Evas *eo_e, Evas_Smart *s)
625EOLIAN static Eo * 663EOLIAN static Eo *
626_efl_canvas_group_efl_object_constructor(Eo *eo_obj, Evas_Smart_Data *sd) 664_efl_canvas_group_efl_object_constructor(Eo *eo_obj, Evas_Smart_Data *sd)
627{ 665{
666 Evas_Object_Protected_Data *obj;
667
628 sd->object = eo_obj; 668 sd->object = eo_obj;
629 sd->inherit_paragraph_direction = EINA_TRUE; 669 sd->inherit_paragraph_direction = EINA_TRUE;
630 670
631 eo_obj = efl_constructor(efl_super(eo_obj, MY_CLASS)); 671 eo_obj = efl_constructor(efl_super(eo_obj, MY_CLASS));
632 evas_object_smart_init(eo_obj); 672 EINA_SAFETY_ON_NULL_RETURN_VAL(eo_obj, NULL);
673
674 obj = efl_data_scope_get(eo_obj, EFL_CANVAS_OBJECT_CLASS);
675 obj->is_smart = EINA_TRUE;
676 obj->func = &object_func;
677 obj->private_data = efl_data_ref(eo_obj, MY_CLASS);
678 if (!sd->unclipped)
679 _evas_object_smart_clipped_init(eo_obj);
633 680
634 efl_canvas_object_type_set(eo_obj, MY_CLASS_NAME_LEGACY); 681 efl_canvas_object_type_set(eo_obj, MY_CLASS_NAME_LEGACY);
635 efl_canvas_group_add(eo_obj); 682 efl_canvas_group_add(eo_obj);
636 683
684 sd->constructed = EINA_TRUE;
637 return eo_obj; 685 return eo_obj;
638} 686}
639 687
@@ -743,17 +791,8 @@ _evas_object_smart_clipped_init(Evas_Object *eo_obj)
743} 791}
744 792
745EOLIAN static void 793EOLIAN static void
746_efl_canvas_group_group_add(Eo *eo_obj, Evas_Smart_Data *o) 794_efl_canvas_group_group_add(Eo *eo_obj EINA_UNUSED, Evas_Smart_Data *o EINA_UNUSED)
747{ 795{
748 // We shouldn't reach this function in case of legacy API.
749 Evas_Object_Protected_Data *obj = efl_data_scope_get(eo_obj, EFL_CANVAS_OBJECT_CLASS);
750 EINA_SAFETY_ON_FALSE_RETURN(!obj->smart.smart);
751
752 if (!o->unclipped)
753 {
754 if (!o->data) o->unclipped = EINA_TRUE;
755 else _evas_object_smart_clipped_init(eo_obj);
756 }
757} 796}
758 797
759EOLIAN static void 798EOLIAN static void
@@ -761,31 +800,96 @@ _efl_canvas_group_group_del(Eo *eo_obj EINA_UNUSED, Evas_Smart_Data *o)
761{ 800{
762 if (!o->unclipped) 801 if (!o->unclipped)
763 { 802 {
764 Evas_Object_Smart_Clipped_Data *cso = o->data;
765 Eo *clipper;
766
767 if (cso && cso->clipper)
768 {
769 clipper = cso->clipper;
770 cso->clipper = NULL;
771 evas_object_del(clipper);
772 }
773 _efl_canvas_group_group_members_all_del_internal(o); 803 _efl_canvas_group_group_members_all_del_internal(o);
774 } 804 }
775 o->group_del_called = EINA_TRUE; 805 o->group_del_called = EINA_TRUE;
776} 806}
777 807
778EOLIAN static void 808EOLIAN static void
779_efl_canvas_group_efl_canvas_object_no_render_set(Eo *eo_obj, Evas_Smart_Data *o EINA_UNUSED, Eina_Bool enable) 809_efl_canvas_group_efl_canvas_object_no_render_set(Eo *eo_obj, Evas_Smart_Data *o, Eina_Bool enable)
780{ 810{
781 Evas_Object_Protected_Data *obj2; 811 Evas_Object_Protected_Data *obj2;
812 Eo *clipper;
782 813
783 enable = !!enable; 814 enable = !!enable;
784 if (efl_canvas_object_no_render_get(eo_obj) == enable) return; 815 if (efl_canvas_object_no_render_get(eo_obj) == enable) return;
816
785 efl_canvas_object_no_render_set(efl_super(eo_obj, MY_CLASS), enable); 817 efl_canvas_object_no_render_set(efl_super(eo_obj, MY_CLASS), enable);
786 818
787 EINA_INLIST_FOREACH(evas_object_smart_members_get_direct(eo_obj), obj2) 819 clipper = (!o->unclipped) ? _smart_clipper_get(o) : NULL;
788 efl_canvas_object_no_render_set(obj2->object, enable); 820 EINA_INLIST_FOREACH(o->contained, obj2)
821 {
822 if (obj2->object != clipper)
823 efl_canvas_object_no_render_set(obj2->object, enable);
824 }
825}
826
827EOLIAN static void
828_efl_canvas_group_efl_gfx_color_set(Eo *eo_obj, Evas_Smart_Data *o, int r, int g, int b, int a)
829{
830 if (_evas_object_intercept_call(eo_obj, EVAS_OBJECT_INTERCEPT_CB_COLOR_SET, 0, r, g, b, a))
831 return;
832
833 efl_gfx_color_set(efl_super(eo_obj, MY_CLASS), r, g, b, a);
834
835 if (!o->unclipped)
836 {
837 Evas_Object *clipper = _smart_clipper_get(o);
838 EINA_SAFETY_ON_NULL_RETURN(clipper);
839
840 efl_gfx_color_set(clipper, r, g, b, a);
841 // Note: Legacy impl (and Widget) didn't call super in this case...
842 }
843}
844
845EOLIAN static void
846_efl_canvas_group_efl_gfx_visible_set(Eo *eo_obj, Evas_Smart_Data *o, Eina_Bool vis)
847{
848 if (_evas_object_intercept_call(eo_obj, EVAS_OBJECT_INTERCEPT_CB_VISIBLE, 0, vis))
849 return;
850
851 efl_gfx_visible_set(efl_super(eo_obj, MY_CLASS), vis);
852
853 if (!o->unclipped)
854 {
855 Evas_Object *clipper = _smart_clipper_get(o);
856 EINA_SAFETY_ON_NULL_RETURN(clipper);
857
858 // note: maybe this is not necessary with no_render set on the clipper
859 if (vis && !evas_object_clipees_has(clipper))
860 return;
861
862 efl_gfx_visible_set(clipper, vis);
863 }
864}
865
866EOLIAN static void
867_efl_canvas_group_efl_gfx_position_set(Eo *eo_obj, Evas_Smart_Data *o, Evas_Coord x, Evas_Coord y)
868{
869 if (_evas_object_intercept_call(eo_obj, EVAS_OBJECT_INTERCEPT_CB_MOVE, 0, x, y))
870 return;
871
872 if (!o->unclipped)
873 _evas_object_smart_clipped_smart_move_internal(eo_obj, x, y);
874 efl_gfx_position_set(efl_super(eo_obj, MY_CLASS), x, y);
875}
876
877EOLIAN static void
878_efl_canvas_group_efl_canvas_object_clip_set(Eo *eo_obj, Evas_Smart_Data *o, Evas_Object *clip)
879{
880 EINA_SAFETY_ON_FALSE_RETURN(!clip || efl_isa(clip, EFL_CANVAS_OBJECT_CLASS));
881 if (_evas_object_intercept_call(eo_obj, EVAS_OBJECT_INTERCEPT_CB_CLIP_SET, 0, clip))
882 return;
883
884 efl_canvas_object_clip_set(efl_super(eo_obj, MY_CLASS), clip);
885
886 if (!o->unclipped)
887 {
888 Evas_Object *clipper = _smart_clipper_get(o);
889 EINA_SAFETY_ON_NULL_RETURN(clipper);
890
891 efl_canvas_object_clip_set(clipper, clip);
892 }
789} 893}
790 894
791void 895void
@@ -1581,16 +1685,6 @@ evas_object_smart_bounding_box_update(Evas_Object_Protected_Data *obj)
1581} 1685}
1582 1686
1583/* all nice and private */ 1687/* all nice and private */
1584static inline void
1585evas_object_smart_init(Evas_Object *eo_obj)
1586{
1587 Evas_Object_Protected_Data *obj = efl_data_scope_get(eo_obj, EFL_CANVAS_OBJECT_CLASS);
1588 obj->is_smart = EINA_TRUE;
1589 /* set up methods (compulsory) */
1590 obj->func = &object_func;
1591 obj->private_data = efl_data_ref(eo_obj, MY_CLASS);
1592}
1593
1594static void 1688static void
1595evas_object_smart_render(Evas_Object *eo_obj EINA_UNUSED, Evas_Object_Protected_Data *obj EINA_UNUSED, void *type_private_data EINA_UNUSED, void *engine EINA_UNUSED, void *output EINA_UNUSED, void *context EINA_UNUSED, void *surface EINA_UNUSED, int x EINA_UNUSED, int y EINA_UNUSED, Eina_Bool do_async EINA_UNUSED) 1689evas_object_smart_render(Evas_Object *eo_obj EINA_UNUSED, Evas_Object_Protected_Data *obj EINA_UNUSED, void *type_private_data EINA_UNUSED, void *engine EINA_UNUSED, void *output EINA_UNUSED, void *context EINA_UNUSED, void *surface EINA_UNUSED, int x EINA_UNUSED, int y EINA_UNUSED, Eina_Bool do_async EINA_UNUSED)
1596{ 1690{
@@ -1746,5 +1840,4 @@ EOAPI EFL_VOID_FUNC_BODYV(efl_canvas_group_unclipped_set, EFL_FUNC_CALL(enable),
1746 EFL_OBJECT_OP_FUNC(efl_canvas_group_del, _efl_canvas_group_group_del), \ 1840 EFL_OBJECT_OP_FUNC(efl_canvas_group_del, _efl_canvas_group_group_del), \
1747 EFL_OBJECT_OP_FUNC(efl_canvas_group_unclipped_set, _efl_canvas_group_group_unclipped_set) 1841 EFL_OBJECT_OP_FUNC(efl_canvas_group_unclipped_set, _efl_canvas_group_group_unclipped_set)
1748 1842
1749
1750#include "canvas/efl_canvas_group.eo.c" 1843#include "canvas/efl_canvas_group.eo.c"
diff --git a/src/lib/evas/canvas/evas_object_smart_clipped.c b/src/lib/evas/canvas/evas_object_smart_clipped.c
index 6c2c8ea..776c7fd 100644
--- a/src/lib/evas/canvas/evas_object_smart_clipped.c
+++ b/src/lib/evas/canvas/evas_object_smart_clipped.c
@@ -49,16 +49,6 @@ evas_object_smart_clipped_smart_move(Evas_Object *eo_obj, Evas_Coord x, Evas_Coo
49 _evas_object_smart_clipped_smart_move_internal(eo_obj, x, y); 49 _evas_object_smart_clipped_smart_move_internal(eo_obj, x, y);
50} 50}
51 51
52EOLIAN static void
53_efl_canvas_group_clipped_efl_gfx_position_set(Eo *eo_obj, void *_pd EINA_UNUSED, Evas_Coord x, Evas_Coord y)
54{
55 if (_evas_object_intercept_call(eo_obj, EVAS_OBJECT_INTERCEPT_CB_MOVE, 0, x, y))
56 return;
57
58 _evas_object_smart_clipped_smart_move_internal(eo_obj, x, y);
59 efl_gfx_position_set(efl_super(eo_obj, MY_CLASS), x, y);
60}
61
62static void 52static void
63evas_object_smart_clipped_smart_show(Evas_Object *eo_obj) 53evas_object_smart_clipped_smart_show(Evas_Object *eo_obj)
64{ 54{
@@ -74,28 +64,6 @@ evas_object_smart_clipped_smart_hide(Evas_Object *eo_obj)
74 evas_object_hide(cso->clipper); 64 evas_object_hide(cso->clipper);
75} 65}
76 66
77EOLIAN static void
78_efl_canvas_group_clipped_efl_gfx_visible_set(Eo *eo_obj, void *_pd EINA_UNUSED, Eina_Bool vis)
79{
80 if (_evas_object_intercept_call(eo_obj, EVAS_OBJECT_INTERCEPT_CB_VISIBLE, 0, vis))
81 return;
82
83 efl_gfx_visible_set(efl_super(eo_obj, MY_CLASS), vis);
84
85 if (vis) evas_object_smart_clipped_smart_show(eo_obj);
86 else evas_object_smart_clipped_smart_hide(eo_obj);
87}
88
89EOLIAN static void
90_efl_canvas_group_clipped_efl_canvas_object_no_render_set(Eo *eo_obj, void *_pd EINA_UNUSED, Eina_Bool enable)
91{
92 CSO_DATA_GET_OR_RETURN(eo_obj, cso);
93 enable = !!enable;
94 if (efl_canvas_object_no_render_get(eo_obj) == enable) return;
95 efl_canvas_object_no_render_set(efl_super(eo_obj, MY_CLASS), enable);
96 efl_canvas_object_no_render_set(cso->clipper, 1);
97}
98
99static void 67static void
100evas_object_smart_clipped_smart_color_set(Evas_Object *eo_obj, int r, int g, int b, int a) 68evas_object_smart_clipped_smart_color_set(Evas_Object *eo_obj, int r, int g, int b, int a)
101{ 69{
@@ -103,12 +71,6 @@ evas_object_smart_clipped_smart_color_set(Evas_Object *eo_obj, int r, int g, int
103 evas_object_color_set(cso->clipper, r, g, b, a); 71 evas_object_color_set(cso->clipper, r, g, b, a);
104} 72}
105 73
106EOLIAN static void
107_efl_canvas_group_clipped_efl_gfx_color_set(Eo *eo_obj, void *_pd EINA_UNUSED, int r, int g, int b, int a)
108{
109 evas_object_smart_clipped_smart_color_set(eo_obj, r, g, b, a);
110}
111
112static void 74static void
113evas_object_smart_clipped_smart_clip_set(Evas_Object *eo_obj, Evas_Object *clip) 75evas_object_smart_clipped_smart_clip_set(Evas_Object *eo_obj, Evas_Object *clip)
114{ 76{
@@ -123,17 +85,6 @@ evas_object_smart_clipped_smart_clip_unset(Evas_Object *eo_obj)
123 evas_object_clip_unset(cso->clipper); 85 evas_object_clip_unset(cso->clipper);
124} 86}
125 87
126EOLIAN static void
127_efl_canvas_group_clipped_efl_canvas_object_clip_set(Eo *eo_obj, void *_pd EINA_UNUSED, Evas_Object *clip)
128{
129 if (_evas_object_intercept_call(eo_obj, EVAS_OBJECT_INTERCEPT_CB_CLIP_SET, 0, clip))
130 return;
131
132 efl_canvas_object_clip_set(efl_super(eo_obj, MY_CLASS), clip);
133 if (clip) evas_object_smart_clipped_smart_clip_set(eo_obj, clip);
134 else evas_object_smart_clipped_smart_clip_unset(eo_obj);
135}
136
137static void 88static void
138evas_object_smart_clipped_smart_member_add(Evas_Object *eo_obj, Evas_Object *member) 89evas_object_smart_clipped_smart_member_add(Evas_Object *eo_obj, Evas_Object *member)
139{ 90{
@@ -145,13 +96,6 @@ evas_object_smart_clipped_smart_member_add(Evas_Object *eo_obj, Evas_Object *mem
145 evas_object_show(cso->clipper); 96 evas_object_show(cso->clipper);
146} 97}
147 98
148EOLIAN static void
149_efl_canvas_group_clipped_efl_canvas_group_group_member_add(Eo *eo_obj, void *_pd EINA_UNUSED, Evas_Object *member)
150{
151 efl_canvas_group_member_add(efl_super(eo_obj, MY_CLASS), member);
152 evas_object_smart_clipped_smart_member_add(eo_obj, member);
153}
154
155static void 99static void
156evas_object_smart_clipped_smart_member_del(Evas_Object *eo_obj, Evas_Object *member) 100evas_object_smart_clipped_smart_member_del(Evas_Object *eo_obj, Evas_Object *member)
157{ 101{
@@ -163,13 +107,6 @@ evas_object_smart_clipped_smart_member_del(Evas_Object *eo_obj, Evas_Object *mem
163 evas_object_hide(cso->clipper); 107 evas_object_hide(cso->clipper);
164} 108}
165 109
166EOLIAN static void
167_efl_canvas_group_clipped_efl_canvas_group_group_member_del(Eo *eo_obj, void *_pd EINA_UNUSED, Evas_Object *member)
168{
169 evas_object_smart_clipped_smart_member_del(eo_obj, member);
170 efl_canvas_group_member_del(efl_super(eo_obj, MY_CLASS), member);
171}
172
173EOLIAN static Eo * 110EOLIAN static Eo *
174_efl_canvas_group_clipped_efl_object_constructor(Eo *eo_obj, void *_pd EINA_UNUSED) 111_efl_canvas_group_clipped_efl_object_constructor(Eo *eo_obj, void *_pd EINA_UNUSED)
175{ 112{