zmike pushed a commit to branch master.

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

commit 4d79efce64db8c9be8a79a299fbeb2ae97b60af2
Author: Mike Blumenkrantz <zm...@samsung.com>
Date:   Tue Jul 30 13:11:54 2019 -0400

    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_bg_legacy_eo.c          |  2 +-
 src/lib/elementary/efl_ui_button_legacy_eo.c      |  2 +-
 src/lib/elementary/efl_ui_check_legacy_eo.c       |  2 +-
 src/lib/elementary/efl_ui_frame_legacy_eo.c       |  2 +-
 src/lib/elementary/efl_ui_layout.c                | 52 +++++++++++++++--------
 src/lib/elementary/efl_ui_layout_legacy_eo.c      | 39 ++++++++++++++++-
 src/lib/elementary/efl_ui_layout_legacy_eo.h      |  2 +
 src/lib/elementary/efl_ui_panes_legacy_eo.c       |  2 +-
 src/lib/elementary/efl_ui_progressbar_legacy_eo.c |  2 +-
 src/lib/elementary/efl_ui_radio_legacy_eo.c       |  2 +-
 src/lib/elementary/efl_ui_textpath_legacy_eo.c    |  2 +-
 src/lib/elementary/efl_ui_video_legacy_eo.c       |  2 +-
 src/lib/elementary/efl_ui_win_legacy_eo.c         |  2 +-
 src/lib/elementary/elm_actionslider_eo.c          |  2 +-
 src/lib/elementary/elm_bubble_eo.c                |  2 +-
 src/lib/elementary/elm_calendar_eo.c              |  2 +-
 src/lib/elementary/elm_clock_eo.c                 |  2 +-
 src/lib/elementary/elm_code_widget_legacy_eo.c    |  2 +-
 src/lib/elementary/elm_colorselector_eo.c         |  2 +-
 src/lib/elementary/elm_conformant_eo.c            |  2 +-
 src/lib/elementary/elm_ctxpopup_eo.c              |  2 +-
 src/lib/elementary/elm_dayselector_eo.c           |  2 +-
 src/lib/elementary/elm_entry_eo.c                 |  2 +-
 src/lib/elementary/elm_fileselector_button_eo.c   |  2 +-
 src/lib/elementary/elm_fileselector_entry_eo.c    |  2 +-
 src/lib/elementary/elm_fileselector_eo.c          |  2 +-
 src/lib/elementary/elm_flipselector_eo.c          |  2 +-
 src/lib/elementary/elm_gengrid_eo.c               |  2 +-
 src/lib/elementary/elm_genlist_eo.c               |  2 +-
 src/lib/elementary/elm_hover_eo.c                 |  2 +-
 src/lib/elementary/elm_hoversel_eo.c              |  2 +-
 src/lib/elementary/elm_index_eo.c                 |  2 +-
 src/lib/elementary/elm_inwin_eo.c                 |  2 +-
 src/lib/elementary/elm_label_eo.c                 |  2 +-
 src/lib/elementary/elm_list_eo.c                  |  2 +-
 src/lib/elementary/elm_multibuttonentry_eo.c      |  2 +-
 src/lib/elementary/elm_naviframe_eo.c             |  2 +-
 src/lib/elementary/elm_panel_eo.c                 |  2 +-
 src/lib/elementary/elm_player_eo.c                |  2 +-
 src/lib/elementary/elm_popup_eo.c                 |  2 +-
 src/lib/elementary/elm_priv.h                     |  1 +
 src/lib/elementary/elm_route_eo.c                 |  2 +-
 src/lib/elementary/elm_scroller_eo.c              |  2 +-
 src/lib/elementary/elm_segment_control_eo.c       |  2 +-
 src/lib/elementary/elm_separator_eo.c             |  2 +-
 src/lib/elementary/elm_slider_eo.c                |  2 +-
 src/lib/elementary/elm_slideshow_eo.c             |  2 +-
 src/lib/elementary/elm_spinner_eo.c               |  2 +-
 src/lib/elementary/elm_thumb_eo.c                 |  2 +-
 src/lib/elementary/elm_widget_layout.h            |  8 +++-
 50 files changed, 126 insertions(+), 66 deletions(-)

diff --git a/src/lib/elementary/efl_ui_bg_legacy_eo.c 
b/src/lib/elementary/efl_ui_bg_legacy_eo.c
index 9cd23ff42f..ea7bffcb8d 100644
--- a/src/lib/elementary/efl_ui_bg_legacy_eo.c
+++ b/src/lib/elementary/efl_ui_bg_legacy_eo.c
@@ -32,4 +32,4 @@ static const Efl_Class_Description 
_efl_ui_bg_legacy_class_desc = {
    NULL
 };
 
-EFL_DEFINE_CLASS(efl_ui_bg_legacy_class_get, &_efl_ui_bg_legacy_class_desc, 
EFL_UI_BG_CLASS, EFL_UI_LEGACY_INTERFACE, NULL);
+EFL_DEFINE_CLASS(efl_ui_bg_legacy_class_get, &_efl_ui_bg_legacy_class_desc, 
EFL_UI_BG_CLASS, ELM_LAYOUT_MIXIN, EFL_UI_LEGACY_INTERFACE, NULL);
diff --git a/src/lib/elementary/efl_ui_button_legacy_eo.c 
b/src/lib/elementary/efl_ui_button_legacy_eo.c
index 0fcd13af64..81d3735872 100644
--- a/src/lib/elementary/efl_ui_button_legacy_eo.c
+++ b/src/lib/elementary/efl_ui_button_legacy_eo.c
@@ -44,4 +44,4 @@ static const Efl_Class_Description 
_efl_ui_button_legacy_class_desc = {
    NULL
 };
 
-EFL_DEFINE_CLASS(efl_ui_button_legacy_class_get, 
&_efl_ui_button_legacy_class_desc, EFL_UI_BUTTON_CLASS, 
EFL_UI_LEGACY_INTERFACE, NULL);
+EFL_DEFINE_CLASS(efl_ui_button_legacy_class_get, 
&_efl_ui_button_legacy_class_desc, EFL_UI_BUTTON_CLASS, ELM_LAYOUT_MIXIN, 
EFL_UI_LEGACY_INTERFACE, NULL);
diff --git a/src/lib/elementary/efl_ui_check_legacy_eo.c 
b/src/lib/elementary/efl_ui_check_legacy_eo.c
index cd1d466ee9..591fc2783a 100644
--- a/src/lib/elementary/efl_ui_check_legacy_eo.c
+++ b/src/lib/elementary/efl_ui_check_legacy_eo.c
@@ -44,4 +44,4 @@ static const Efl_Class_Description 
_efl_ui_check_legacy_class_desc = {
    NULL
 };
 
-EFL_DEFINE_CLASS(efl_ui_check_legacy_class_get, 
&_efl_ui_check_legacy_class_desc, EFL_UI_CHECK_CLASS, EFL_UI_LEGACY_INTERFACE, 
NULL);
+EFL_DEFINE_CLASS(efl_ui_check_legacy_class_get, 
&_efl_ui_check_legacy_class_desc, EFL_UI_CHECK_CLASS, ELM_LAYOUT_MIXIN, 
EFL_UI_LEGACY_INTERFACE, NULL);
diff --git a/src/lib/elementary/efl_ui_frame_legacy_eo.c 
b/src/lib/elementary/efl_ui_frame_legacy_eo.c
index 22e40576a2..ca10f87b8a 100644
--- a/src/lib/elementary/efl_ui_frame_legacy_eo.c
+++ b/src/lib/elementary/efl_ui_frame_legacy_eo.c
@@ -32,4 +32,4 @@ static const Efl_Class_Description 
_efl_ui_frame_legacy_class_desc = {
    NULL
 };
 
-EFL_DEFINE_CLASS(efl_ui_frame_legacy_class_get, 
&_efl_ui_frame_legacy_class_desc, EFL_UI_FRAME_CLASS, EFL_UI_LEGACY_INTERFACE, 
NULL);
+EFL_DEFINE_CLASS(efl_ui_frame_legacy_class_get, 
&_efl_ui_frame_legacy_class_desc, EFL_UI_FRAME_CLASS, ELM_LAYOUT_MIXIN, 
EFL_UI_LEGACY_INTERFACE, NULL);
diff --git a/src/lib/elementary/efl_ui_layout.c 
b/src/lib/elementary/efl_ui_layout.c
index cde03e3213..9576c2bfc6 100644
--- a/src/lib/elementary/efl_ui_layout.c
+++ b/src/lib/elementary/efl_ui_layout.c
@@ -160,7 +160,7 @@ _part_cursor_free(Efl_Ui_Layout_Sub_Object_Cursor *pc)
 }
 
 static void
-_sizing_eval(Evas_Object *obj, Efl_Ui_Layout_Data *sd)
+_sizing_eval(Evas_Object *obj, Efl_Ui_Layout_Data *sd, Elm_Layout_Data *ld)
 {
    int minh = 0, minw = 0;
    int rest_w = 0, rest_h = 0;
@@ -179,7 +179,7 @@ _sizing_eval(Evas_Object *obj, Efl_Ui_Layout_Data *sd)
      }
    elm_coords_finger_size_adjust(sd->finger_size_multiplier_x, &rest_w,
                                  sd->finger_size_multiplier_y, &rest_h);
-   if (elm_widget_is_legacy(obj))
+   if (ld)
      sz = efl_gfx_hint_size_combined_min_get(obj);
    else
      sz = efl_gfx_hint_size_min_get(obj);
@@ -205,8 +205,13 @@ _sizing_eval(Evas_Object *obj, Efl_Ui_Layout_Data *sd)
    if (sd->finger_size_multiplier_y)
      elm_coords_finger_size_adjust(sd->finger_size_multiplier_x, NULL,
                                    sd->finger_size_multiplier_y, &minh);
-   evas_object_size_hint_min_set(obj, minw, minh);
+
    efl_gfx_hint_size_restricted_min_set(obj, EINA_SIZE2D(minw, minh));
+
+   if (ld)
+     {
+        efl_gfx_hint_size_min_set(obj, EINA_SIZE2D(minw, minh));
+     }
    sd->restricted_calc_w = sd->restricted_calc_h = EINA_FALSE;
 }
 
@@ -879,11 +884,11 @@ _efl_ui_layout_efl_canvas_group_group_calculate(Eo *obj, 
void *_pd EINA_UNUSED)
 EOLIAN static void
 _efl_ui_layout_base_efl_canvas_group_group_calculate(Eo *obj, 
Efl_Ui_Layout_Data *sd)
 {
-   Eina_Bool legacy = elm_widget_is_legacy(obj);
+   Elm_Layout_Data *ld = efl_data_scope_safe_get(obj, ELM_LAYOUT_MIXIN);
    efl_canvas_group_need_recalculate_set(obj, EINA_FALSE);
-   if ((!legacy) || sd->needs_size_calc)
-     _sizing_eval(obj, sd);
-   sd->needs_size_calc = EINA_FALSE;
+   if ((!ld) || ld->needs_size_calc)
+     _sizing_eval(obj, sd, ld);
+   if (ld) ld->needs_size_calc = EINA_FALSE;
 }
 
 EOLIAN static void
@@ -1781,19 +1786,26 @@ 
_efl_ui_layout_base_efl_layout_group_part_exist_get(const Eo *obj, Efl_Ui_Layout
    return efl_layout_group_part_exist_get(wd->resize_obj, part);
 }
 
+EOLIAN static void
+_elm_layout_efl_canvas_group_change(Eo *obj, Elm_Layout_Data *ld)
+{
+   Efl_Ui_Layout_Data *sd;
+
+   if (!efl_finalized_get(obj)) return;
+   sd = efl_data_scope_safe_get(obj, EFL_UI_LAYOUT_BASE_CLASS);
+   if (sd->frozen) return;
+   ld->needs_size_calc = EINA_TRUE;
+   efl_canvas_group_change(efl_super(obj, ELM_LAYOUT_MIXIN));
+}
+
 /* layout's sizing evaluation is deferred. evaluation requests are
  * queued up and only flag the object as 'changed'. when it comes to
  * Evas's rendering phase, it will be addressed, finally (see
  * _efl_ui_layout_smart_calculate()). */
-static void
-_elm_layout_sizing_eval(Eo *obj, Efl_Ui_Layout_Data *sd)
+EOLIAN static void
+_elm_layout_sizing_eval(Eo *obj, Elm_Layout_Data *ld)
 {
-   if (!efl_finalized_get(obj)) return;
-   if (sd->frozen) return;
-   if (sd->needs_size_calc) return;
-   sd->needs_size_calc = EINA_TRUE;
-
-   evas_object_smart_changed(obj);
+   _elm_layout_efl_canvas_group_change(obj, ld);
 }
 
 EAPI void
@@ -2538,6 +2550,13 @@ _efl_ui_layout_base_efl_object_finalize(Eo *obj, 
Efl_Ui_Layout_Data *pd EINA_UNU
    efl_ui_widget_theme_apply(eo);
    efl_canvas_group_change(obj);
 
+   Elm_Layout_Data *ld = efl_data_scope_safe_get(obj, ELM_LAYOUT_MIXIN);
+   /* need to explicitly set this here to permit group_calc since 
efl_canvas_group_change
+    * blocks non-finalized objects and the object will not be finalized until 
after this
+    * function returns
+    */
+   if (ld) ld->needs_size_calc = EINA_TRUE;
+
    win = elm_widget_top_get(obj);
    if (efl_isa(win, EFL_UI_WIN_CLASS))
      efl_ui_layout_theme_rotation_apply(obj, efl_ui_win_rotation_get(win));
@@ -2788,7 +2807,6 @@ _efl_ui_layout_base_theme_rotation_apply(Eo *obj, 
Efl_Ui_Layout_Data *pd EINA_UN
 
 /* Internal EO APIs and hidden overrides */
 
-EAPI EFL_VOID_FUNC_BODY(elm_layout_sizing_eval)
 EFL_FUNC_BODY_CONST(elm_layout_text_aliases_get, const 
Elm_Layout_Part_Alias_Description *, NULL)
 EFL_FUNC_BODY_CONST(elm_layout_content_aliases_get, const 
Elm_Layout_Part_Alias_Description *, NULL)
 
@@ -2801,9 +2819,9 @@ ELM_LAYOUT_TEXT_ALIASES_IMPLEMENT(MY_CLASS_PFX)
    ELM_PART_TEXT_DEFAULT_OPS(efl_ui_layout_base), \
    ELM_LAYOUT_CONTENT_ALIASES_OPS(MY_CLASS_PFX), \
    ELM_LAYOUT_TEXT_ALIASES_OPS(MY_CLASS_PFX), \
-   EFL_OBJECT_OP_FUNC(elm_layout_sizing_eval, _elm_layout_sizing_eval), \
    EFL_OBJECT_OP_FUNC(efl_dbg_info_get, 
_efl_ui_layout_base_efl_object_dbg_info_get)
 
+
 #include "efl_ui_layout_base.eo.c"
 #include "efl_ui_layout.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);
diff --git a/src/lib/elementary/efl_ui_layout_legacy_eo.h 
b/src/lib/elementary/efl_ui_layout_legacy_eo.h
index 3ad5c08573..687bd590c5 100644
--- a/src/lib/elementary/efl_ui_layout_legacy_eo.h
+++ b/src/lib/elementary/efl_ui_layout_legacy_eo.h
@@ -19,8 +19,10 @@ typedef Eo Efl_Ui_Layout_Legacy;
  * @ingroup Efl_Ui_Layout_Legacy
  */
 #define EFL_UI_LAYOUT_LEGACY_CLASS efl_ui_layout_legacy_class_get()
+#define ELM_LAYOUT_MIXIN elm_layout_mixin_get()
 
 EWAPI const Efl_Class *efl_ui_layout_legacy_class_get(void);
+EWAPI const Efl_Class *elm_layout_mixin_get(void);
 #endif /* EFL_BETA_API_SUPPORT */
 
 #endif
diff --git a/src/lib/elementary/efl_ui_panes_legacy_eo.c 
b/src/lib/elementary/efl_ui_panes_legacy_eo.c
index ba95585085..b4fd1a8844 100644
--- a/src/lib/elementary/efl_ui_panes_legacy_eo.c
+++ b/src/lib/elementary/efl_ui_panes_legacy_eo.c
@@ -32,4 +32,4 @@ static const Efl_Class_Description 
_efl_ui_panes_legacy_class_desc = {
    NULL
 };
 
-EFL_DEFINE_CLASS(efl_ui_panes_legacy_class_get, 
&_efl_ui_panes_legacy_class_desc, EFL_UI_PANES_CLASS, EFL_UI_LEGACY_INTERFACE, 
NULL);
+EFL_DEFINE_CLASS(efl_ui_panes_legacy_class_get, 
&_efl_ui_panes_legacy_class_desc, EFL_UI_PANES_CLASS, ELM_LAYOUT_MIXIN, 
EFL_UI_LEGACY_INTERFACE, NULL);
diff --git a/src/lib/elementary/efl_ui_progressbar_legacy_eo.c 
b/src/lib/elementary/efl_ui_progressbar_legacy_eo.c
index 8b32d45cd1..46c8bb5753 100644
--- a/src/lib/elementary/efl_ui_progressbar_legacy_eo.c
+++ b/src/lib/elementary/efl_ui_progressbar_legacy_eo.c
@@ -44,4 +44,4 @@ static const Efl_Class_Description 
_efl_ui_progressbar_legacy_class_desc = {
    NULL
 };
 
-EFL_DEFINE_CLASS(efl_ui_progressbar_legacy_class_get, 
&_efl_ui_progressbar_legacy_class_desc, EFL_UI_PROGRESSBAR_CLASS, 
EFL_UI_LEGACY_INTERFACE, NULL);
+EFL_DEFINE_CLASS(efl_ui_progressbar_legacy_class_get, 
&_efl_ui_progressbar_legacy_class_desc, EFL_UI_PROGRESSBAR_CLASS, 
ELM_LAYOUT_MIXIN, EFL_UI_LEGACY_INTERFACE, NULL);
diff --git a/src/lib/elementary/efl_ui_radio_legacy_eo.c 
b/src/lib/elementary/efl_ui_radio_legacy_eo.c
index b0a26730e8..453fbc29ff 100644
--- a/src/lib/elementary/efl_ui_radio_legacy_eo.c
+++ b/src/lib/elementary/efl_ui_radio_legacy_eo.c
@@ -44,4 +44,4 @@ static const Efl_Class_Description 
_efl_ui_radio_legacy_class_desc = {
    NULL
 };
 
-EFL_DEFINE_CLASS(efl_ui_radio_legacy_class_get, 
&_efl_ui_radio_legacy_class_desc, EFL_UI_RADIO_CLASS, EFL_UI_LEGACY_INTERFACE, 
NULL);
+EFL_DEFINE_CLASS(efl_ui_radio_legacy_class_get, 
&_efl_ui_radio_legacy_class_desc, EFL_UI_RADIO_CLASS, ELM_LAYOUT_MIXIN, 
EFL_UI_LEGACY_INTERFACE, NULL);
diff --git a/src/lib/elementary/efl_ui_textpath_legacy_eo.c 
b/src/lib/elementary/efl_ui_textpath_legacy_eo.c
index 401a626321..c60d031b6a 100644
--- a/src/lib/elementary/efl_ui_textpath_legacy_eo.c
+++ b/src/lib/elementary/efl_ui_textpath_legacy_eo.c
@@ -32,4 +32,4 @@ static const Efl_Class_Description 
_efl_ui_textpath_legacy_class_desc = {
    NULL
 };
 
-EFL_DEFINE_CLASS(efl_ui_textpath_legacy_class_get, 
&_efl_ui_textpath_legacy_class_desc, EFL_UI_TEXTPATH_CLASS, 
EFL_UI_LEGACY_INTERFACE, NULL);
+EFL_DEFINE_CLASS(efl_ui_textpath_legacy_class_get, 
&_efl_ui_textpath_legacy_class_desc, EFL_UI_TEXTPATH_CLASS, ELM_LAYOUT_MIXIN, 
EFL_UI_LEGACY_INTERFACE, NULL);
diff --git a/src/lib/elementary/efl_ui_video_legacy_eo.c 
b/src/lib/elementary/efl_ui_video_legacy_eo.c
index 1c49e44ca4..462d3679b4 100644
--- a/src/lib/elementary/efl_ui_video_legacy_eo.c
+++ b/src/lib/elementary/efl_ui_video_legacy_eo.c
@@ -32,4 +32,4 @@ static const Efl_Class_Description 
_efl_ui_video_legacy_class_desc = {
    NULL
 };
 
-EFL_DEFINE_CLASS(efl_ui_video_legacy_class_get, 
&_efl_ui_video_legacy_class_desc, EFL_UI_VIDEO_CLASS, EFL_UI_LEGACY_INTERFACE, 
NULL);
+EFL_DEFINE_CLASS(efl_ui_video_legacy_class_get, 
&_efl_ui_video_legacy_class_desc, EFL_UI_VIDEO_CLASS, ELM_LAYOUT_MIXIN, 
EFL_UI_LEGACY_INTERFACE, NULL);
diff --git a/src/lib/elementary/efl_ui_win_legacy_eo.c 
b/src/lib/elementary/efl_ui_win_legacy_eo.c
index 8be8c6892b..79f3e7ea3f 100644
--- a/src/lib/elementary/efl_ui_win_legacy_eo.c
+++ b/src/lib/elementary/efl_ui_win_legacy_eo.c
@@ -32,4 +32,4 @@ static const Efl_Class_Description 
_efl_ui_win_legacy_class_desc = {
    NULL
 };
 
-EFL_DEFINE_CLASS(efl_ui_win_legacy_class_get, &_efl_ui_win_legacy_class_desc, 
EFL_UI_WIN_CLASS, EFL_UI_LEGACY_INTERFACE, NULL);
+EFL_DEFINE_CLASS(efl_ui_win_legacy_class_get, &_efl_ui_win_legacy_class_desc, 
EFL_UI_WIN_CLASS, ELM_LAYOUT_MIXIN, EFL_UI_LEGACY_INTERFACE, NULL);
diff --git a/src/lib/elementary/elm_actionslider_eo.c 
b/src/lib/elementary/elm_actionslider_eo.c
index 5e47bd42f6..20cd7aa6e2 100644
--- a/src/lib/elementary/elm_actionslider_eo.c
+++ b/src/lib/elementary/elm_actionslider_eo.c
@@ -77,6 +77,6 @@ static const Efl_Class_Description 
_elm_actionslider_class_desc = {
    NULL
 };
 
-EFL_DEFINE_CLASS(elm_actionslider_class_get, &_elm_actionslider_class_desc, 
EFL_UI_LAYOUT_BASE_CLASS, EFL_UI_SELECTABLE_INTERFACE, EFL_UI_LEGACY_INTERFACE, 
NULL);
+EFL_DEFINE_CLASS(elm_actionslider_class_get, &_elm_actionslider_class_desc, 
EFL_UI_LAYOUT_BASE_CLASS, EFL_UI_SELECTABLE_INTERFACE, ELM_LAYOUT_MIXIN, 
EFL_UI_LEGACY_INTERFACE, NULL);
 
 #include "elm_actionslider_eo.legacy.c"
diff --git a/src/lib/elementary/elm_bubble_eo.c 
b/src/lib/elementary/elm_bubble_eo.c
index 24780aacf0..284bfb9ff6 100644
--- a/src/lib/elementary/elm_bubble_eo.c
+++ b/src/lib/elementary/elm_bubble_eo.c
@@ -50,6 +50,6 @@ static const Efl_Class_Description _elm_bubble_class_desc = {
    NULL
 };
 
-EFL_DEFINE_CLASS(elm_bubble_class_get, &_elm_bubble_class_desc, 
EFL_UI_LAYOUT_BASE_CLASS, EFL_INPUT_CLICKABLE_MIXIN, EFL_UI_LEGACY_INTERFACE, 
NULL);
+EFL_DEFINE_CLASS(elm_bubble_class_get, &_elm_bubble_class_desc, 
EFL_UI_LAYOUT_BASE_CLASS, EFL_INPUT_CLICKABLE_MIXIN, ELM_LAYOUT_MIXIN, 
EFL_UI_LEGACY_INTERFACE, NULL);
 
 #include "elm_bubble_eo.legacy.c"
diff --git a/src/lib/elementary/elm_calendar_eo.c 
b/src/lib/elementary/elm_calendar_eo.c
index 2bb920f78f..eebca52f43 100644
--- a/src/lib/elementary/elm_calendar_eo.c
+++ b/src/lib/elementary/elm_calendar_eo.c
@@ -207,6 +207,6 @@ static const Efl_Class_Description _elm_calendar_class_desc 
= {
    NULL
 };
 
-EFL_DEFINE_CLASS(elm_calendar_class_get, &_elm_calendar_class_desc, 
EFL_UI_LAYOUT_BASE_CLASS, EFL_UI_FOCUS_COMPOSITION_MIXIN, 
EFL_ACCESS_WIDGET_ACTION_MIXIN, EFL_UI_LEGACY_INTERFACE, NULL);
+EFL_DEFINE_CLASS(elm_calendar_class_get, &_elm_calendar_class_desc, 
EFL_UI_LAYOUT_BASE_CLASS, EFL_UI_FOCUS_COMPOSITION_MIXIN, 
EFL_ACCESS_WIDGET_ACTION_MIXIN, ELM_LAYOUT_MIXIN, EFL_UI_LEGACY_INTERFACE, 
NULL);
 
 #include "elm_calendar_eo.legacy.c"
diff --git a/src/lib/elementary/elm_clock_eo.c 
b/src/lib/elementary/elm_clock_eo.c
index b5bfc9f099..a8512e2200 100644
--- a/src/lib/elementary/elm_clock_eo.c
+++ b/src/lib/elementary/elm_clock_eo.c
@@ -244,6 +244,6 @@ static const Efl_Class_Description _elm_clock_class_desc = {
    NULL
 };
 
-EFL_DEFINE_CLASS(elm_clock_class_get, &_elm_clock_class_desc, 
EFL_UI_LAYOUT_BASE_CLASS, EFL_UI_FOCUS_COMPOSITION_MIXIN, 
EFL_UI_LEGACY_INTERFACE, NULL);
+EFL_DEFINE_CLASS(elm_clock_class_get, &_elm_clock_class_desc, 
EFL_UI_LAYOUT_BASE_CLASS, EFL_UI_FOCUS_COMPOSITION_MIXIN, ELM_LAYOUT_MIXIN, 
EFL_UI_LEGACY_INTERFACE, NULL);
 
 #include "elm_clock_eo.legacy.c"
diff --git a/src/lib/elementary/elm_code_widget_legacy_eo.c 
b/src/lib/elementary/elm_code_widget_legacy_eo.c
index e16bdd1cc3..e239bf327f 100644
--- a/src/lib/elementary/elm_code_widget_legacy_eo.c
+++ b/src/lib/elementary/elm_code_widget_legacy_eo.c
@@ -24,4 +24,4 @@ static const Efl_Class_Description 
_elm_code_widget_legacy_class_desc = {
    NULL
 };
 
-EFL_DEFINE_CLASS(elm_code_widget_legacy_class_get, 
&_elm_code_widget_legacy_class_desc, ELM_CODE_WIDGET_CLASS, 
EFL_UI_LEGACY_INTERFACE, NULL);
+EFL_DEFINE_CLASS(elm_code_widget_legacy_class_get, 
&_elm_code_widget_legacy_class_desc, ELM_CODE_WIDGET_CLASS, ELM_LAYOUT_MIXIN, 
EFL_UI_LEGACY_INTERFACE, NULL);
diff --git a/src/lib/elementary/elm_colorselector_eo.c 
b/src/lib/elementary/elm_colorselector_eo.c
index c7ce07fc82..7ccbde22d7 100644
--- a/src/lib/elementary/elm_colorselector_eo.c
+++ b/src/lib/elementary/elm_colorselector_eo.c
@@ -146,6 +146,6 @@ static const Efl_Class_Description 
_elm_colorselector_class_desc = {
    NULL
 };
 
-EFL_DEFINE_CLASS(elm_colorselector_class_get, &_elm_colorselector_class_desc, 
EFL_UI_LAYOUT_BASE_CLASS, EFL_UI_FOCUS_COMPOSITION_MIXIN, 
EFL_ACCESS_WIDGET_ACTION_MIXIN, EFL_INPUT_CLICKABLE_MIXIN, 
EFL_UI_LEGACY_INTERFACE, NULL);
+EFL_DEFINE_CLASS(elm_colorselector_class_get, &_elm_colorselector_class_desc, 
EFL_UI_LAYOUT_BASE_CLASS, EFL_UI_FOCUS_COMPOSITION_MIXIN, 
EFL_ACCESS_WIDGET_ACTION_MIXIN, EFL_INPUT_CLICKABLE_MIXIN, ELM_LAYOUT_MIXIN, 
EFL_UI_LEGACY_INTERFACE, NULL);
 
 #include "elm_colorselector_eo.legacy.c"
diff --git a/src/lib/elementary/elm_conformant_eo.c 
b/src/lib/elementary/elm_conformant_eo.c
index 379426c52f..deebeee4de 100644
--- a/src/lib/elementary/elm_conformant_eo.c
+++ b/src/lib/elementary/elm_conformant_eo.c
@@ -44,4 +44,4 @@ static const Efl_Class_Description _elm_conformant_class_desc 
= {
    NULL
 };
 
-EFL_DEFINE_CLASS(elm_conformant_class_get, &_elm_conformant_class_desc, 
EFL_UI_LAYOUT_BASE_CLASS, EFL_UI_LEGACY_INTERFACE, NULL);
+EFL_DEFINE_CLASS(elm_conformant_class_get, &_elm_conformant_class_desc, 
EFL_UI_LAYOUT_BASE_CLASS, ELM_LAYOUT_MIXIN, EFL_UI_LEGACY_INTERFACE, NULL);
diff --git a/src/lib/elementary/elm_ctxpopup_eo.c 
b/src/lib/elementary/elm_ctxpopup_eo.c
index ebd83c53fb..fbe2f54805 100644
--- a/src/lib/elementary/elm_ctxpopup_eo.c
+++ b/src/lib/elementary/elm_ctxpopup_eo.c
@@ -220,6 +220,6 @@ static const Efl_Class_Description _elm_ctxpopup_class_desc 
= {
    NULL
 };
 
-EFL_DEFINE_CLASS(elm_ctxpopup_class_get, &_elm_ctxpopup_class_desc, 
EFL_UI_LAYOUT_BASE_CLASS, EFL_UI_FOCUS_LAYER_MIXIN, 
EFL_ACCESS_WIDGET_ACTION_MIXIN, EFL_UI_LEGACY_INTERFACE, 
ELM_WIDGET_ITEM_CONTAINER_INTERFACE, NULL);
+EFL_DEFINE_CLASS(elm_ctxpopup_class_get, &_elm_ctxpopup_class_desc, 
EFL_UI_LAYOUT_BASE_CLASS, EFL_UI_FOCUS_LAYER_MIXIN, 
EFL_ACCESS_WIDGET_ACTION_MIXIN, ELM_LAYOUT_MIXIN, EFL_UI_LEGACY_INTERFACE, 
ELM_WIDGET_ITEM_CONTAINER_INTERFACE, NULL);
 
 #include "elm_ctxpopup_eo.legacy.c"
diff --git a/src/lib/elementary/elm_dayselector_eo.c 
b/src/lib/elementary/elm_dayselector_eo.c
index 83b478502f..acffe74ec2 100644
--- a/src/lib/elementary/elm_dayselector_eo.c
+++ b/src/lib/elementary/elm_dayselector_eo.c
@@ -126,6 +126,6 @@ static const Efl_Class_Description 
_elm_dayselector_class_desc = {
    NULL
 };
 
-EFL_DEFINE_CLASS(elm_dayselector_class_get, &_elm_dayselector_class_desc, 
EFL_UI_LAYOUT_BASE_CLASS, EFL_UI_LEGACY_INTERFACE, NULL);
+EFL_DEFINE_CLASS(elm_dayselector_class_get, &_elm_dayselector_class_desc, 
EFL_UI_LAYOUT_BASE_CLASS, ELM_LAYOUT_MIXIN, EFL_UI_LEGACY_INTERFACE, NULL);
 
 #include "elm_dayselector_eo.legacy.c"
diff --git a/src/lib/elementary/elm_entry_eo.c 
b/src/lib/elementary/elm_entry_eo.c
index 397a6b4ea7..21c9c34eb9 100644
--- a/src/lib/elementary/elm_entry_eo.c
+++ b/src/lib/elementary/elm_entry_eo.c
@@ -1188,6 +1188,6 @@ static const Efl_Class_Description _elm_entry_class_desc 
= {
    NULL
 };
 
-EFL_DEFINE_CLASS(elm_entry_class_get, &_elm_entry_class_desc, 
EFL_UI_LAYOUT_BASE_CLASS, ELM_INTERFACE_SCROLLABLE_MIXIN, 
EFL_INPUT_CLICKABLE_MIXIN, EFL_ACCESS_TEXT_INTERFACE, 
EFL_ACCESS_EDITABLE_TEXT_INTERFACE, EFL_FILE_MIXIN, 
EFL_UI_SELECTABLE_INTERFACE, EFL_UI_SCROLLABLE_INTERFACE, 
EFL_ACCESS_WIDGET_ACTION_MIXIN, EFL_UI_LEGACY_INTERFACE, NULL);
+EFL_DEFINE_CLASS(elm_entry_class_get, &_elm_entry_class_desc, 
EFL_UI_LAYOUT_BASE_CLASS, ELM_INTERFACE_SCROLLABLE_MIXIN, 
EFL_INPUT_CLICKABLE_MIXIN, EFL_ACCESS_TEXT_INTERFACE, 
EFL_ACCESS_EDITABLE_TEXT_INTERFACE, EFL_FILE_MIXIN, 
EFL_UI_SELECTABLE_INTERFACE, EFL_UI_SCROLLABLE_INTERFACE, 
EFL_ACCESS_WIDGET_ACTION_MIXIN, ELM_LAYOUT_MIXIN, EFL_UI_LEGACY_INTERFACE, 
NULL);
 
 #include "elm_entry_eo.legacy.c"
diff --git a/src/lib/elementary/elm_fileselector_button_eo.c 
b/src/lib/elementary/elm_fileselector_button_eo.c
index 7857efe04e..fb40341af3 100644
--- a/src/lib/elementary/elm_fileselector_button_eo.c
+++ b/src/lib/elementary/elm_fileselector_button_eo.c
@@ -146,4 +146,4 @@ static const Efl_Class_Description 
_elm_fileselector_button_class_desc = {
    NULL
 };
 
-EFL_DEFINE_CLASS(elm_fileselector_button_class_get, 
&_elm_fileselector_button_class_desc, EFL_UI_BUTTON_CLASS, 
ELM_INTERFACE_FILESELECTOR_INTERFACE, EFL_UI_LEGACY_INTERFACE, NULL);
+EFL_DEFINE_CLASS(elm_fileselector_button_class_get, 
&_elm_fileselector_button_class_desc, EFL_UI_BUTTON_CLASS, 
ELM_INTERFACE_FILESELECTOR_INTERFACE, ELM_LAYOUT_MIXIN, 
EFL_UI_LEGACY_INTERFACE, NULL);
diff --git a/src/lib/elementary/elm_fileselector_entry_eo.c 
b/src/lib/elementary/elm_fileselector_entry_eo.c
index 3f6e17a701..90ee427d85 100644
--- a/src/lib/elementary/elm_fileselector_entry_eo.c
+++ b/src/lib/elementary/elm_fileselector_entry_eo.c
@@ -88,4 +88,4 @@ static const Efl_Class_Description 
_elm_fileselector_entry_class_desc = {
    NULL
 };
 
-EFL_DEFINE_CLASS(elm_fileselector_entry_class_get, 
&_elm_fileselector_entry_class_desc, EFL_UI_LAYOUT_BASE_CLASS, 
ELM_INTERFACE_FILESELECTOR_INTERFACE, EFL_INPUT_CLICKABLE_MIXIN, 
EFL_UI_SELECTABLE_INTERFACE, EFL_UI_LEGACY_INTERFACE, NULL);
+EFL_DEFINE_CLASS(elm_fileselector_entry_class_get, 
&_elm_fileselector_entry_class_desc, EFL_UI_LAYOUT_BASE_CLASS, 
ELM_INTERFACE_FILESELECTOR_INTERFACE, EFL_INPUT_CLICKABLE_MIXIN, 
EFL_UI_SELECTABLE_INTERFACE, ELM_LAYOUT_MIXIN, EFL_UI_LEGACY_INTERFACE, NULL);
diff --git a/src/lib/elementary/elm_fileselector_eo.c 
b/src/lib/elementary/elm_fileselector_eo.c
index e6b7d726f4..eb74bb1ebd 100644
--- a/src/lib/elementary/elm_fileselector_eo.c
+++ b/src/lib/elementary/elm_fileselector_eo.c
@@ -202,6 +202,6 @@ static const Efl_Class_Description 
_elm_fileselector_class_desc = {
    _elm_fileselector_class_destructor
 };
 
-EFL_DEFINE_CLASS(elm_fileselector_class_get, &_elm_fileselector_class_desc, 
EFL_UI_LAYOUT_BASE_CLASS, ELM_INTERFACE_FILESELECTOR_INTERFACE, 
EFL_ACCESS_WIDGET_ACTION_MIXIN, EFL_UI_FOCUS_COMPOSITION_MIXIN, 
EFL_INPUT_CLICKABLE_MIXIN, EFL_UI_SELECTABLE_INTERFACE, 
EFL_UI_LEGACY_INTERFACE, NULL);
+EFL_DEFINE_CLASS(elm_fileselector_class_get, &_elm_fileselector_class_desc, 
EFL_UI_LAYOUT_BASE_CLASS, ELM_INTERFACE_FILESELECTOR_INTERFACE, 
EFL_ACCESS_WIDGET_ACTION_MIXIN, EFL_UI_FOCUS_COMPOSITION_MIXIN, 
EFL_INPUT_CLICKABLE_MIXIN, EFL_UI_SELECTABLE_INTERFACE, ELM_LAYOUT_MIXIN, 
EFL_UI_LEGACY_INTERFACE, NULL);
 
 #include "elm_fileselector_eo.legacy.c"
diff --git a/src/lib/elementary/elm_flipselector_eo.c 
b/src/lib/elementary/elm_flipselector_eo.c
index 3ad73d3a17..c0f01bbd22 100644
--- a/src/lib/elementary/elm_flipselector_eo.c
+++ b/src/lib/elementary/elm_flipselector_eo.c
@@ -154,6 +154,6 @@ static const Efl_Class_Description 
_elm_flipselector_class_desc = {
    NULL
 };
 
-EFL_DEFINE_CLASS(elm_flipselector_class_get, &_elm_flipselector_class_desc, 
EFL_UI_LAYOUT_BASE_CLASS, EFL_UI_RANGE_INTERACTIVE_INTERFACE, 
EFL_ACCESS_WIDGET_ACTION_MIXIN, EFL_UI_SELECTABLE_INTERFACE, 
EFL_UI_LEGACY_INTERFACE, NULL);
+EFL_DEFINE_CLASS(elm_flipselector_class_get, &_elm_flipselector_class_desc, 
EFL_UI_LAYOUT_BASE_CLASS, EFL_UI_RANGE_INTERACTIVE_INTERFACE, 
EFL_ACCESS_WIDGET_ACTION_MIXIN, EFL_UI_SELECTABLE_INTERFACE, ELM_LAYOUT_MIXIN, 
EFL_UI_LEGACY_INTERFACE, NULL);
 
 #include "elm_flipselector_eo.legacy.c"
diff --git a/src/lib/elementary/elm_gengrid_eo.c 
b/src/lib/elementary/elm_gengrid_eo.c
index d927aae949..fd16690cc2 100644
--- a/src/lib/elementary/elm_gengrid_eo.c
+++ b/src/lib/elementary/elm_gengrid_eo.c
@@ -512,6 +512,6 @@ static const Efl_Class_Description _elm_gengrid_class_desc 
= {
    NULL
 };
 
-EFL_DEFINE_CLASS(elm_gengrid_class_get, &_elm_gengrid_class_desc, 
EFL_UI_LAYOUT_BASE_CLASS, ELM_INTERFACE_SCROLLABLE_MIXIN, 
EFL_INPUT_CLICKABLE_MIXIN, EFL_ACCESS_WIDGET_ACTION_MIXIN, 
EFL_ACCESS_SELECTION_INTERFACE, EFL_UI_LEGACY_INTERFACE, 
ELM_WIDGET_ITEM_CONTAINER_INTERFACE, NULL);
+EFL_DEFINE_CLASS(elm_gengrid_class_get, &_elm_gengrid_class_desc, 
EFL_UI_LAYOUT_BASE_CLASS, ELM_INTERFACE_SCROLLABLE_MIXIN, 
EFL_INPUT_CLICKABLE_MIXIN, EFL_ACCESS_WIDGET_ACTION_MIXIN, 
EFL_ACCESS_SELECTION_INTERFACE, ELM_LAYOUT_MIXIN, EFL_UI_LEGACY_INTERFACE, 
ELM_WIDGET_ITEM_CONTAINER_INTERFACE, NULL);
 
 #include "elm_gengrid_eo.legacy.c"
diff --git a/src/lib/elementary/elm_genlist_eo.c 
b/src/lib/elementary/elm_genlist_eo.c
index b34ec2a352..6ee35fbc2f 100644
--- a/src/lib/elementary/elm_genlist_eo.c
+++ b/src/lib/elementary/elm_genlist_eo.c
@@ -681,6 +681,6 @@ static const Efl_Class_Description _elm_genlist_class_desc 
= {
    NULL
 };
 
-EFL_DEFINE_CLASS(elm_genlist_class_get, &_elm_genlist_class_desc, 
EFL_UI_LAYOUT_BASE_CLASS, ELM_INTERFACE_SCROLLABLE_MIXIN, 
EFL_INPUT_CLICKABLE_MIXIN, EFL_ACCESS_WIDGET_ACTION_MIXIN, 
EFL_ACCESS_SELECTION_INTERFACE, EFL_UI_SELECTABLE_INTERFACE, 
EFL_UI_LEGACY_INTERFACE, ELM_WIDGET_ITEM_CONTAINER_INTERFACE, NULL);
+EFL_DEFINE_CLASS(elm_genlist_class_get, &_elm_genlist_class_desc, 
EFL_UI_LAYOUT_BASE_CLASS, ELM_INTERFACE_SCROLLABLE_MIXIN, 
EFL_INPUT_CLICKABLE_MIXIN, EFL_ACCESS_WIDGET_ACTION_MIXIN, 
EFL_ACCESS_SELECTION_INTERFACE, EFL_UI_SELECTABLE_INTERFACE, ELM_LAYOUT_MIXIN, 
EFL_UI_LEGACY_INTERFACE, ELM_WIDGET_ITEM_CONTAINER_INTERFACE, NULL);
 
 #include "elm_genlist_eo.legacy.c"
diff --git a/src/lib/elementary/elm_hover_eo.c 
b/src/lib/elementary/elm_hover_eo.c
index c36c6ccf3f..cc72d79823 100644
--- a/src/lib/elementary/elm_hover_eo.c
+++ b/src/lib/elementary/elm_hover_eo.c
@@ -92,6 +92,6 @@ static const Efl_Class_Description _elm_hover_class_desc = {
    NULL
 };
 
-EFL_DEFINE_CLASS(elm_hover_class_get, &_elm_hover_class_desc, 
EFL_UI_LAYOUT_BASE_CLASS, EFL_UI_FOCUS_LAYER_MIXIN, EFL_INPUT_CLICKABLE_MIXIN, 
EFL_ACCESS_WIDGET_ACTION_MIXIN, EFL_UI_LEGACY_INTERFACE, NULL);
+EFL_DEFINE_CLASS(elm_hover_class_get, &_elm_hover_class_desc, 
EFL_UI_LAYOUT_BASE_CLASS, EFL_UI_FOCUS_LAYER_MIXIN, EFL_INPUT_CLICKABLE_MIXIN, 
EFL_ACCESS_WIDGET_ACTION_MIXIN, ELM_LAYOUT_MIXIN, EFL_UI_LEGACY_INTERFACE, 
NULL);
 
 #include "elm_hover_eo.legacy.c"
diff --git a/src/lib/elementary/elm_hoversel_eo.c 
b/src/lib/elementary/elm_hoversel_eo.c
index 52bb001c67..676243e98d 100644
--- a/src/lib/elementary/elm_hoversel_eo.c
+++ b/src/lib/elementary/elm_hoversel_eo.c
@@ -189,6 +189,6 @@ static const Efl_Class_Description _elm_hoversel_class_desc 
= {
    NULL
 };
 
-EFL_DEFINE_CLASS(elm_hoversel_class_get, &_elm_hoversel_class_desc, 
EFL_UI_BUTTON_LEGACY_CLASS, EFL_UI_SELECTABLE_INTERFACE, 
EFL_INPUT_CLICKABLE_MIXIN, EFL_ACCESS_WIDGET_ACTION_MIXIN, 
EFL_UI_LEGACY_INTERFACE, NULL);
+EFL_DEFINE_CLASS(elm_hoversel_class_get, &_elm_hoversel_class_desc, 
EFL_UI_BUTTON_LEGACY_CLASS, EFL_UI_SELECTABLE_INTERFACE, 
EFL_INPUT_CLICKABLE_MIXIN, EFL_ACCESS_WIDGET_ACTION_MIXIN, ELM_LAYOUT_MIXIN, 
EFL_UI_LEGACY_INTERFACE, NULL);
 
 #include "elm_hoversel_eo.legacy.c"
diff --git a/src/lib/elementary/elm_index_eo.c 
b/src/lib/elementary/elm_index_eo.c
index 806f94ce0b..32f46afb01 100644
--- a/src/lib/elementary/elm_index_eo.c
+++ b/src/lib/elementary/elm_index_eo.c
@@ -322,6 +322,6 @@ static const Efl_Class_Description _elm_index_class_desc = {
    NULL
 };
 
-EFL_DEFINE_CLASS(elm_index_class_get, &_elm_index_class_desc, 
EFL_UI_LAYOUT_BASE_CLASS, EFL_UI_LAYOUT_ORIENTABLE_INTERFACE, 
EFL_INPUT_CLICKABLE_MIXIN, EFL_UI_SELECTABLE_INTERFACE, 
EFL_UI_LEGACY_INTERFACE, NULL);
+EFL_DEFINE_CLASS(elm_index_class_get, &_elm_index_class_desc, 
EFL_UI_LAYOUT_BASE_CLASS, EFL_UI_LAYOUT_ORIENTABLE_INTERFACE, 
EFL_INPUT_CLICKABLE_MIXIN, EFL_UI_SELECTABLE_INTERFACE, ELM_LAYOUT_MIXIN, 
EFL_UI_LEGACY_INTERFACE, NULL);
 
 #include "elm_index_eo.legacy.c"
diff --git a/src/lib/elementary/elm_inwin_eo.c 
b/src/lib/elementary/elm_inwin_eo.c
index 887f9ee453..f8cab678ef 100644
--- a/src/lib/elementary/elm_inwin_eo.c
+++ b/src/lib/elementary/elm_inwin_eo.c
@@ -49,6 +49,6 @@ static const Efl_Class_Description _elm_inwin_class_desc = {
    NULL
 };
 
-EFL_DEFINE_CLASS(elm_inwin_class_get, &_elm_inwin_class_desc, 
EFL_UI_LAYOUT_BASE_CLASS, EFL_UI_FOCUS_LAYER_MIXIN, EFL_CONTENT_INTERFACE, 
EFL_UI_LEGACY_INTERFACE, NULL);
+EFL_DEFINE_CLASS(elm_inwin_class_get, &_elm_inwin_class_desc, 
EFL_UI_LAYOUT_BASE_CLASS, EFL_UI_FOCUS_LAYER_MIXIN, EFL_CONTENT_INTERFACE, 
ELM_LAYOUT_MIXIN, EFL_UI_LEGACY_INTERFACE, NULL);
 
 #include "elm_inwin_eo.legacy.c"
diff --git a/src/lib/elementary/elm_label_eo.c 
b/src/lib/elementary/elm_label_eo.c
index d19545f842..0ec366bad0 100644
--- a/src/lib/elementary/elm_label_eo.c
+++ b/src/lib/elementary/elm_label_eo.c
@@ -214,6 +214,6 @@ static const Efl_Class_Description _elm_label_class_desc = {
    NULL
 };
 
-EFL_DEFINE_CLASS(elm_label_class_get, &_elm_label_class_desc, 
EFL_UI_LAYOUT_BASE_CLASS, EFL_UI_LEGACY_INTERFACE, NULL);
+EFL_DEFINE_CLASS(elm_label_class_get, &_elm_label_class_desc, 
EFL_UI_LAYOUT_BASE_CLASS, ELM_LAYOUT_MIXIN, EFL_UI_LEGACY_INTERFACE, NULL);
 
 #include "elm_label_eo.legacy.c"
diff --git a/src/lib/elementary/elm_list_eo.c b/src/lib/elementary/elm_list_eo.c
index 32f0f77b92..dbd01f31bd 100644
--- a/src/lib/elementary/elm_list_eo.c
+++ b/src/lib/elementary/elm_list_eo.c
@@ -363,6 +363,6 @@ static const Efl_Class_Description _elm_list_class_desc = {
    NULL
 };
 
-EFL_DEFINE_CLASS(elm_list_class_get, &_elm_list_class_desc, 
EFL_UI_LAYOUT_BASE_CLASS, ELM_INTERFACE_SCROLLABLE_MIXIN, 
EFL_ACCESS_WIDGET_ACTION_MIXIN, EFL_ACCESS_SELECTION_INTERFACE, 
EFL_ACCESS_OBJECT_MIXIN, EFL_INPUT_CLICKABLE_MIXIN, 
EFL_UI_SELECTABLE_INTERFACE, EFL_UI_LEGACY_INTERFACE, 
ELM_WIDGET_ITEM_CONTAINER_INTERFACE, NULL);
+EFL_DEFINE_CLASS(elm_list_class_get, &_elm_list_class_desc, 
EFL_UI_LAYOUT_BASE_CLASS, ELM_INTERFACE_SCROLLABLE_MIXIN, 
EFL_ACCESS_WIDGET_ACTION_MIXIN, EFL_ACCESS_SELECTION_INTERFACE, 
EFL_ACCESS_OBJECT_MIXIN, EFL_INPUT_CLICKABLE_MIXIN, 
EFL_UI_SELECTABLE_INTERFACE, ELM_LAYOUT_MIXIN, EFL_UI_LEGACY_INTERFACE, 
ELM_WIDGET_ITEM_CONTAINER_INTERFACE, NULL);
 
 #include "elm_list_eo.legacy.c"
diff --git a/src/lib/elementary/elm_multibuttonentry_eo.c 
b/src/lib/elementary/elm_multibuttonentry_eo.c
index d8697d015f..be0b5b60e2 100644
--- a/src/lib/elementary/elm_multibuttonentry_eo.c
+++ b/src/lib/elementary/elm_multibuttonentry_eo.c
@@ -219,6 +219,6 @@ static const Efl_Class_Description 
_elm_multibuttonentry_class_desc = {
    NULL
 };
 
-EFL_DEFINE_CLASS(elm_multibuttonentry_class_get, 
&_elm_multibuttonentry_class_desc, EFL_UI_LAYOUT_BASE_CLASS, 
EFL_INPUT_CLICKABLE_MIXIN, EFL_UI_LEGACY_INTERFACE, NULL);
+EFL_DEFINE_CLASS(elm_multibuttonentry_class_get, 
&_elm_multibuttonentry_class_desc, EFL_UI_LAYOUT_BASE_CLASS, 
EFL_INPUT_CLICKABLE_MIXIN, ELM_LAYOUT_MIXIN, EFL_UI_LEGACY_INTERFACE, NULL);
 
 #include "elm_multibuttonentry_eo.legacy.c"
diff --git a/src/lib/elementary/elm_naviframe_eo.c 
b/src/lib/elementary/elm_naviframe_eo.c
index 5bbd65f531..784052b741 100644
--- a/src/lib/elementary/elm_naviframe_eo.c
+++ b/src/lib/elementary/elm_naviframe_eo.c
@@ -228,6 +228,6 @@ static const Efl_Class_Description 
_elm_naviframe_class_desc = {
    NULL
 };
 
-EFL_DEFINE_CLASS(elm_naviframe_class_get, &_elm_naviframe_class_desc, 
EFL_UI_LAYOUT_BASE_CLASS, EFL_ACCESS_WIDGET_ACTION_MIXIN, 
EFL_UI_LEGACY_INTERFACE, NULL);
+EFL_DEFINE_CLASS(elm_naviframe_class_get, &_elm_naviframe_class_desc, 
EFL_UI_LAYOUT_BASE_CLASS, EFL_ACCESS_WIDGET_ACTION_MIXIN, ELM_LAYOUT_MIXIN, 
EFL_UI_LEGACY_INTERFACE, NULL);
 
 #include "elm_naviframe_eo.legacy.c"
diff --git a/src/lib/elementary/elm_panel_eo.c 
b/src/lib/elementary/elm_panel_eo.c
index d8b60f37e6..e4365972c5 100644
--- a/src/lib/elementary/elm_panel_eo.c
+++ b/src/lib/elementary/elm_panel_eo.c
@@ -205,6 +205,6 @@ static const Efl_Class_Description _elm_panel_class_desc = {
    NULL
 };
 
-EFL_DEFINE_CLASS(elm_panel_class_get, &_elm_panel_class_desc, 
EFL_UI_LAYOUT_BASE_CLASS, EFL_UI_FOCUS_LAYER_MIXIN, 
ELM_INTERFACE_SCROLLABLE_MIXIN, EFL_ACCESS_WIDGET_ACTION_MIXIN, 
EFL_UI_LEGACY_INTERFACE, NULL);
+EFL_DEFINE_CLASS(elm_panel_class_get, &_elm_panel_class_desc, 
EFL_UI_LAYOUT_BASE_CLASS, EFL_UI_FOCUS_LAYER_MIXIN, 
ELM_INTERFACE_SCROLLABLE_MIXIN, EFL_ACCESS_WIDGET_ACTION_MIXIN, 
ELM_LAYOUT_MIXIN, EFL_UI_LEGACY_INTERFACE, NULL);
 
 #include "elm_panel_eo.legacy.c"
diff --git a/src/lib/elementary/elm_player_eo.c 
b/src/lib/elementary/elm_player_eo.c
index 067926faf6..faefe3fb88 100644
--- a/src/lib/elementary/elm_player_eo.c
+++ b/src/lib/elementary/elm_player_eo.c
@@ -70,4 +70,4 @@ static const Efl_Class_Description _elm_player_class_desc = {
    NULL
 };
 
-EFL_DEFINE_CLASS(elm_player_class_get, &_elm_player_class_desc, 
EFL_UI_LAYOUT_BASE_CLASS, EFL_ACCESS_WIDGET_ACTION_MIXIN, 
EFL_UI_LEGACY_INTERFACE, NULL);
+EFL_DEFINE_CLASS(elm_player_class_get, &_elm_player_class_desc, 
EFL_UI_LAYOUT_BASE_CLASS, EFL_ACCESS_WIDGET_ACTION_MIXIN, ELM_LAYOUT_MIXIN, 
EFL_UI_LEGACY_INTERFACE, NULL);
diff --git a/src/lib/elementary/elm_popup_eo.c 
b/src/lib/elementary/elm_popup_eo.c
index 928638419d..b573f5d971 100644
--- a/src/lib/elementary/elm_popup_eo.c
+++ b/src/lib/elementary/elm_popup_eo.c
@@ -234,6 +234,6 @@ static const Efl_Class_Description _elm_popup_class_desc = {
    NULL
 };
 
-EFL_DEFINE_CLASS(elm_popup_class_get, &_elm_popup_class_desc, 
EFL_UI_LAYOUT_BASE_CLASS, EFL_ACCESS_WIDGET_ACTION_MIXIN, 
EFL_UI_LEGACY_INTERFACE, NULL);
+EFL_DEFINE_CLASS(elm_popup_class_get, &_elm_popup_class_desc, 
EFL_UI_LAYOUT_BASE_CLASS, EFL_ACCESS_WIDGET_ACTION_MIXIN, ELM_LAYOUT_MIXIN, 
EFL_UI_LEGACY_INTERFACE, NULL);
 
 #include "elm_popup_eo.legacy.c"
diff --git a/src/lib/elementary/elm_priv.h b/src/lib/elementary/elm_priv.h
index 82faa149ea..ab82a12f0d 100644
--- a/src/lib/elementary/elm_priv.h
+++ b/src/lib/elementary/elm_priv.h
@@ -163,6 +163,7 @@
 # include "efl_ui_homogeneous_model.eo.h"
 # include "efl_ui_exact_model.eo.h"
 # include "efl_ui_average_model.eo.h"
+#include "efl_ui_layout_legacy_eo.h"
 
 extern const char *_efl_model_property_itemw;
 extern const char *_efl_model_property_itemh;
diff --git a/src/lib/elementary/elm_route_eo.c 
b/src/lib/elementary/elm_route_eo.c
index 930eacdc30..48ad6b8d4b 100644
--- a/src/lib/elementary/elm_route_eo.c
+++ b/src/lib/elementary/elm_route_eo.c
@@ -51,6 +51,6 @@ static const Efl_Class_Description _elm_route_class_desc = {
    NULL
 };
 
-EFL_DEFINE_CLASS(elm_route_class_get, &_elm_route_class_desc, 
EFL_UI_WIDGET_CLASS, EFL_UI_LEGACY_INTERFACE, NULL);
+EFL_DEFINE_CLASS(elm_route_class_get, &_elm_route_class_desc, 
EFL_UI_WIDGET_CLASS, ELM_LAYOUT_MIXIN, EFL_UI_LEGACY_INTERFACE, NULL);
 
 #include "elm_route_eo.legacy.c"
diff --git a/src/lib/elementary/elm_scroller_eo.c 
b/src/lib/elementary/elm_scroller_eo.c
index dfac9caba6..ff511946dc 100644
--- a/src/lib/elementary/elm_scroller_eo.c
+++ b/src/lib/elementary/elm_scroller_eo.c
@@ -153,6 +153,6 @@ static const Efl_Class_Description _elm_scroller_class_desc 
= {
    NULL
 };
 
-EFL_DEFINE_CLASS(elm_scroller_class_get, &_elm_scroller_class_desc, 
EFL_UI_LAYOUT_BASE_CLASS, ELM_INTERFACE_SCROLLABLE_MIXIN, 
EFL_ACCESS_WIDGET_ACTION_MIXIN, EFL_UI_SCROLLABLE_INTERFACE, 
EFL_CONTENT_INTERFACE, EFL_UI_LEGACY_INTERFACE, NULL);
+EFL_DEFINE_CLASS(elm_scroller_class_get, &_elm_scroller_class_desc, 
EFL_UI_LAYOUT_BASE_CLASS, ELM_INTERFACE_SCROLLABLE_MIXIN, 
EFL_ACCESS_WIDGET_ACTION_MIXIN, EFL_UI_SCROLLABLE_INTERFACE, 
EFL_CONTENT_INTERFACE, ELM_LAYOUT_MIXIN, EFL_UI_LEGACY_INTERFACE, NULL);
 
 #include "elm_scroller_eo.legacy.c"
diff --git a/src/lib/elementary/elm_segment_control_eo.c 
b/src/lib/elementary/elm_segment_control_eo.c
index 931b473543..59a9cc2b72 100644
--- a/src/lib/elementary/elm_segment_control_eo.c
+++ b/src/lib/elementary/elm_segment_control_eo.c
@@ -90,6 +90,6 @@ static const Efl_Class_Description 
_elm_segment_control_class_desc = {
    NULL
 };
 
-EFL_DEFINE_CLASS(elm_segment_control_class_get, 
&_elm_segment_control_class_desc, EFL_UI_LAYOUT_BASE_CLASS, 
EFL_UI_FOCUS_COMPOSITION_MIXIN, EFL_UI_LEGACY_INTERFACE, NULL);
+EFL_DEFINE_CLASS(elm_segment_control_class_get, 
&_elm_segment_control_class_desc, EFL_UI_LAYOUT_BASE_CLASS, 
EFL_UI_FOCUS_COMPOSITION_MIXIN, ELM_LAYOUT_MIXIN, EFL_UI_LEGACY_INTERFACE, 
NULL);
 
 #include "elm_segment_control_eo.legacy.c"
diff --git a/src/lib/elementary/elm_separator_eo.c 
b/src/lib/elementary/elm_separator_eo.c
index 5dc45a041a..182739fb20 100644
--- a/src/lib/elementary/elm_separator_eo.c
+++ b/src/lib/elementary/elm_separator_eo.c
@@ -78,6 +78,6 @@ static const Efl_Class_Description _elm_separator_class_desc 
= {
    NULL
 };
 
-EFL_DEFINE_CLASS(elm_separator_class_get, &_elm_separator_class_desc, 
EFL_UI_LAYOUT_BASE_CLASS, EFL_UI_LEGACY_INTERFACE, NULL);
+EFL_DEFINE_CLASS(elm_separator_class_get, &_elm_separator_class_desc, 
EFL_UI_LAYOUT_BASE_CLASS, ELM_LAYOUT_MIXIN, EFL_UI_LEGACY_INTERFACE, NULL);
 
 #include "elm_separator_eo.legacy.c"
diff --git a/src/lib/elementary/elm_slider_eo.c 
b/src/lib/elementary/elm_slider_eo.c
index 5f3ecc29e9..524235b8a1 100644
--- a/src/lib/elementary/elm_slider_eo.c
+++ b/src/lib/elementary/elm_slider_eo.c
@@ -86,4 +86,4 @@ static const Efl_Class_Description _elm_slider_class_desc = {
    NULL
 };
 
-EFL_DEFINE_CLASS(elm_slider_class_get, &_elm_slider_class_desc, 
EFL_UI_SLIDER_INTERVAL_CLASS, EFL_UI_LEGACY_INTERFACE, EFL_TEXT_INTERFACE, 
EFL_TEXT_MARKUP_INTERFACE, EFL_UI_FORMAT_MIXIN, NULL);
+EFL_DEFINE_CLASS(elm_slider_class_get, &_elm_slider_class_desc, 
EFL_UI_SLIDER_INTERVAL_CLASS, ELM_LAYOUT_MIXIN, EFL_UI_LEGACY_INTERFACE, 
EFL_TEXT_INTERFACE, EFL_TEXT_MARKUP_INTERFACE, EFL_UI_FORMAT_MIXIN, NULL);
diff --git a/src/lib/elementary/elm_slideshow_eo.c 
b/src/lib/elementary/elm_slideshow_eo.c
index 8860bf95e6..ef68acd2d0 100644
--- a/src/lib/elementary/elm_slideshow_eo.c
+++ b/src/lib/elementary/elm_slideshow_eo.c
@@ -316,6 +316,6 @@ static const Efl_Class_Description 
_elm_slideshow_class_desc = {
    NULL
 };
 
-EFL_DEFINE_CLASS(elm_slideshow_class_get, &_elm_slideshow_class_desc, 
EFL_UI_LAYOUT_BASE_CLASS, EFL_ACCESS_WIDGET_ACTION_MIXIN, 
EFL_UI_LEGACY_INTERFACE, NULL);
+EFL_DEFINE_CLASS(elm_slideshow_class_get, &_elm_slideshow_class_desc, 
EFL_UI_LAYOUT_BASE_CLASS, EFL_ACCESS_WIDGET_ACTION_MIXIN, ELM_LAYOUT_MIXIN, 
EFL_UI_LEGACY_INTERFACE, NULL);
 
 #include "elm_slideshow_eo.legacy.c"
diff --git a/src/lib/elementary/elm_spinner_eo.c 
b/src/lib/elementary/elm_spinner_eo.c
index f4dde7d242..b659c9867f 100644
--- a/src/lib/elementary/elm_spinner_eo.c
+++ b/src/lib/elementary/elm_spinner_eo.c
@@ -330,6 +330,6 @@ static const Efl_Class_Description _elm_spinner_class_desc 
= {
    NULL
 };
 
-EFL_DEFINE_CLASS(elm_spinner_class_get, &_elm_spinner_class_desc, 
EFL_UI_LAYOUT_BASE_CLASS, EFL_UI_RANGE_INTERACTIVE_INTERFACE, 
EFL_UI_FOCUS_COMPOSITION_MIXIN, EFL_ACCESS_VALUE_INTERFACE, 
EFL_ACCESS_WIDGET_ACTION_MIXIN, EFL_UI_LEGACY_INTERFACE, NULL);
+EFL_DEFINE_CLASS(elm_spinner_class_get, &_elm_spinner_class_desc, 
EFL_UI_LAYOUT_BASE_CLASS, EFL_UI_RANGE_INTERACTIVE_INTERFACE, 
EFL_UI_FOCUS_COMPOSITION_MIXIN, EFL_ACCESS_VALUE_INTERFACE, 
EFL_ACCESS_WIDGET_ACTION_MIXIN, ELM_LAYOUT_MIXIN, EFL_UI_LEGACY_INTERFACE, 
NULL);
 
 #include "elm_spinner_eo.legacy.c"
diff --git a/src/lib/elementary/elm_thumb_eo.c 
b/src/lib/elementary/elm_thumb_eo.c
index d7a469060f..c94e12373a 100644
--- a/src/lib/elementary/elm_thumb_eo.c
+++ b/src/lib/elementary/elm_thumb_eo.c
@@ -82,4 +82,4 @@ static const Efl_Class_Description _elm_thumb_class_desc = {
    NULL
 };
 
-EFL_DEFINE_CLASS(elm_thumb_class_get, &_elm_thumb_class_desc, 
EFL_UI_LAYOUT_BASE_CLASS, EFL_FILE_MIXIN, EFL_INPUT_CLICKABLE_MIXIN, 
EFL_UI_DRAGGABLE_INTERFACE, EFL_UI_LEGACY_INTERFACE, NULL);
+EFL_DEFINE_CLASS(elm_thumb_class_get, &_elm_thumb_class_desc, 
EFL_UI_LAYOUT_BASE_CLASS, EFL_FILE_MIXIN, EFL_INPUT_CLICKABLE_MIXIN, 
EFL_UI_DRAGGABLE_INTERFACE, ELM_LAYOUT_MIXIN, EFL_UI_LEGACY_INTERFACE, NULL);
diff --git a/src/lib/elementary/elm_widget_layout.h 
b/src/lib/elementary/elm_widget_layout.h
index d9cfa82e56..8ec9668c8e 100644
--- a/src/lib/elementary/elm_widget_layout.h
+++ b/src/lib/elementary/elm_widget_layout.h
@@ -47,7 +47,7 @@
 /**
  * Base widget smart data extended with layout instance data.
  */
-typedef struct _Elm_Layout_Smart_Data
+typedef struct _Efl_Ui_Layout_Data
 {
    Evas_Object          *obj; /**< The object itself */
    Eina_List            *subs; /**< List of Elm_Layout_Sub_Object_Data 
structs, to hold the actual sub objects such as text, content and the children 
of box and table. */
@@ -66,7 +66,6 @@ typedef struct _Elm_Layout_Smart_Data
 
    unsigned int          finger_size_multiplier_x, finger_size_multiplier_y; 
/**< multipliers for finger_size during group_calc */
 
-   Eina_Bool             needs_size_calc : 1; /**< This flag is set true when 
the layout sizing eval is already requested. This defers sizing evaluation 
until smart calculation to avoid unnecessary calculation. */
    Eina_Bool             restricted_calc_w : 1; /**< This is a flag to support 
edje restricted_calc in w axis. */
    Eina_Bool             restricted_calc_h : 1; /**< This is a flag to support 
edje restricted_calc in y axis. */
    Eina_Bool             can_access : 1; /**< This is true when all 
text(including textblock) parts can be accessible by accessibility. */
@@ -78,6 +77,11 @@ typedef struct _Elm_Layout_Smart_Data
    Eina_Bool             calc_subobjs : 1; /**< Set to true if group_calc 
should also handle subobjs during manual calc */
 } Efl_Ui_Layout_Data;
 
+typedef struct _Elm_Layout_Data
+{
+   Eina_Bool             needs_size_calc : 1; /**< This flag is set true when 
the layout sizing eval is already requested. This defers sizing evaluation 
until smart calculation to avoid unnecessary calculation. */
+} Elm_Layout_Data;
+
 /**
  * @}
  */

-- 


Reply via email to