From 4d79efce64db8c9be8a79a299fbeb2ae97b60af2 Mon Sep 17 00:00:00 2001 From: Mike Blumenkrantz Date: Tue, 30 Jul 2019 13:11:54 -0400 Subject: elm_layout: create a mixin to provide elm_layout_sizing_eval Summary: this removes elm_layout_sizing_eval entirely from the implementation hierarchy of any efl_ui-based widgets, ensuring that future code will correctly use efl_canvas_group functionality Depends on D9439 Reviewers: bu5hm4n Reviewed By: bu5hm4n Subscribers: bu5hm4n, cedric, #reviewers, #committers Tags: #efl_widgets Maniphest Tasks: T8059 Differential Revision: https://phab.enlightenment.org/D9440 --- src/lib/elementary/efl_ui_layout_legacy_eo.c | 39 ++++++++++++++++++++++++++-- 1 file changed, 37 insertions(+), 2 deletions(-) (limited to 'src/lib/elementary/efl_ui_layout_legacy_eo.c') diff --git a/src/lib/elementary/efl_ui_layout_legacy_eo.c b/src/lib/elementary/efl_ui_layout_legacy_eo.c index 6bec4f9f78..33056b5c03 100644 --- a/src/lib/elementary/efl_ui_layout_legacy_eo.c +++ b/src/lib/elementary/efl_ui_layout_legacy_eo.c @@ -1,7 +1,6 @@ Efl_Object *_efl_ui_layout_legacy_efl_object_constructor(Eo *obj, void *pd); - static Eina_Bool _efl_ui_layout_legacy_class_initializer(Efl_Class *klass) { @@ -32,4 +31,40 @@ static const Efl_Class_Description _efl_ui_layout_legacy_class_desc = { NULL }; -EFL_DEFINE_CLASS(efl_ui_layout_legacy_class_get, &_efl_ui_layout_legacy_class_desc, EFL_UI_LAYOUT_CLASS, EFL_UI_LEGACY_INTERFACE, NULL); +EFL_DEFINE_CLASS(efl_ui_layout_legacy_class_get, &_efl_ui_layout_legacy_class_desc, EFL_UI_LAYOUT_CLASS, ELM_LAYOUT_MIXIN, EFL_UI_LEGACY_INTERFACE, NULL); + +static void _elm_layout_sizing_eval(Eo *obj, Elm_Layout_Data *ld); +EAPI EFL_VOID_FUNC_BODY(elm_layout_sizing_eval); + +static Eina_Bool +_elm_layout_class_initializer(Efl_Class *klass) +{ + const Efl_Object_Ops *opsp = NULL; + + const Efl_Object_Property_Reflection_Ops *ropsp = NULL; + +#ifndef ELM_LAYOUT_EXTRA_OPS +#define ELM_LAYOUT_EXTRA_OPS +#endif + + EFL_OPS_DEFINE(ops, + EFL_OBJECT_OP_FUNC(elm_layout_sizing_eval, _elm_layout_sizing_eval), + EFL_OBJECT_OP_FUNC(efl_canvas_group_change, _elm_layout_efl_canvas_group_change), + ELM_LAYOUT_EXTRA_OPS + ); + opsp = &ops; + + return efl_class_functions_set(klass, opsp, ropsp); +} + +static const Efl_Class_Description _elm_layout_class_desc = { + EO_VERSION, + "Elm.Layout", + EFL_CLASS_TYPE_MIXIN, + sizeof(Elm_Layout_Data), + _elm_layout_class_initializer, + NULL, + NULL +}; + +EFL_DEFINE_CLASS(elm_layout_mixin_get, &_elm_layout_class_desc, NULL, NULL); -- cgit v1.2.1