Eo *parent = NULL;
sd->on_create = EINA_TRUE;
+ efl_canvas_group_unclipped_set(obj, EINA_TRUE);
obj = efl_constructor(efl_super(obj, MY_CLASS));
efl_canvas_object_type_set(obj, MY_CLASS_NAME_LEGACY);
evas_object_smart_callbacks_descriptions_set(obj, _smart_callbacks);
EOLIAN static Eo *
_efl_canvas_video_efl_object_constructor(Eo *obj, Efl_Canvas_Video_Data *pd EINA_UNUSED)
{
+ efl_canvas_group_unclipped_set(obj, EINA_TRUE);
obj = efl_constructor(efl_super(obj, MY_CLASS));
efl_canvas_object_type_set(obj, E_OBJ_NAME);
EOAPI void efl_canvas_object_type_set(Eo *obj, const char *type);
EOAPI void efl_canvas_group_add(Eo *obj);
EOAPI void efl_canvas_group_del(Eo *obj);
+EOAPI void efl_canvas_group_unclipped_set(Eo *obj, Eina_Bool unclipped);
EOAPI void *efl_input_legacy_info_get(const Eo *obj);
EOAPI Eo *efl_input_instance_get(const Eo *obj, Efl_Object *owner, void **priv);
+/* FIXME: This class needs to disappear and its functionality merged into
+ * standard smart objects (Efl.Canvas.Group). */
abstract Efl.Canvas.Group.Clipped (Efl.Canvas.Group)
{
[[Internal class representing a canvas object group with a clipper.]]
data: Evas_Object_Smart_Clipped_Data;
implements {
+ Efl.Object.constructor;
Efl.Gfx.color { set; }
Efl.Gfx.visible { set; }
Efl.Gfx.position { set; }
{
Evas_Object_Protected_Data *obj;
+ efl_canvas_group_unclipped_set(eo_obj, EINA_TRUE);
eo_obj = efl_constructor(efl_super(eo_obj, MY_CLASS));
efl_canvas_object_type_set(eo_obj, MY_CLASS_NAME_LEGACY);
obj = efl_data_scope_get(eo_obj, EFL_CANVAS_OBJECT_CLASS);
Eina_Bool need_recalculate : 1;
Eina_Bool update_boundingbox_needed : 1;
Eina_Bool group_del_called : 1;
+ Eina_Bool unclipped : 1; /* If true, NOT a smart_clipped object */
};
typedef struct
}
EOLIAN static Eo *
-_efl_canvas_group_efl_object_constructor(Eo *eo_obj, Evas_Smart_Data *class_data EINA_UNUSED)
+_efl_canvas_group_efl_object_constructor(Eo *eo_obj, Evas_Smart_Data *sd)
{
- Evas_Smart_Data *smart;
-
- smart = class_data;
- smart->object = eo_obj;
- smart->inherit_paragraph_direction = EINA_TRUE;
+ sd->object = eo_obj;
+ sd->inherit_paragraph_direction = EINA_TRUE;
eo_obj = efl_constructor(efl_super(eo_obj, MY_CLASS));
evas_object_smart_init(eo_obj);
return o->paragraph_direction;
}
+/* Internal EO */
+static void
+_efl_canvas_group_group_unclipped_set(Eo *eo_obj EINA_UNUSED, Evas_Smart_Data *sd, Eina_Bool unclipped)
+{
+ // We must call this function BEFORE the constructor (yes, it's hacky)
+ EINA_SAFETY_ON_FALSE_RETURN(!sd->object);
+ sd->unclipped = !!unclipped;
+}
+
/* Internal EO APIs */
EOAPI EFL_VOID_FUNC_BODY(efl_canvas_group_add)
EOAPI EFL_VOID_FUNC_BODY(efl_canvas_group_del)
+EOAPI EFL_VOID_FUNC_BODYV(efl_canvas_group_unclipped_set, EFL_FUNC_CALL(enable), Eina_Bool enable)
#define EFL_CANVAS_GROUP_EXTRA_OPS \
EFL_OBJECT_OP_FUNC(efl_canvas_group_add, _efl_canvas_group_group_add), \
- EFL_OBJECT_OP_FUNC(efl_canvas_group_del, _efl_canvas_group_group_del)
+ EFL_OBJECT_OP_FUNC(efl_canvas_group_del, _efl_canvas_group_group_del), \
+ EFL_OBJECT_OP_FUNC(efl_canvas_group_unclipped_set, _efl_canvas_group_group_unclipped_set)
#include "canvas/efl_canvas_group.eo.c"
efl_canvas_group_member_del(efl_super(eo_obj, MY_CLASS), member);
}
+EOLIAN static Eo *
+_efl_canvas_group_clipped_efl_object_constructor(Eo *eo_obj, Evas_Object_Smart_Clipped_Data *obj EINA_UNUSED)
+{
+ // Setting this flag before the parent constructor on purpose.
+ efl_canvas_group_unclipped_set(eo_obj, EINA_FALSE);
+ return efl_constructor(efl_super(eo_obj, MY_CLASS));
+}
+
+/* Legacy only */
EAPI void
evas_object_smart_clipped_smart_set(Evas_Smart_Class *sc)
{