efl.ui.layout: split into abstract and real class

Summary:
most widgets inherit from layout to provide implementations for common
functionality such as content/text/theme get+set.

one of the things that layout also brings into its inheritance hierarchy
is efl.file and implementations for its methods. this becomes a problem
when the widget which inherits layout also wants to provide implementations
for efl.file methods (e.g., entry, which uses efl.file to load text files)
as it will result in calling all of the efl.file implementations up the
chain.

in the case of entry, this could result in the 'file' property eventually being
set to the current theme file in use by the entry's layout object, and then the
entry will attempt to autosave its content to the default theme file when it is
destroyed, corrupting the theme file and breaking everything

to solve this:

* efl.ui.layout remains an instantiable class which implements efl.file
* efl.ui.layout_base is the abstract class which provides all the methods of layout
  but should be inherited by all widgets which want to implement efl.file functionality

Depends on D8018

Reviewers: bu5hm4n, segfaultxavi

Reviewed By: segfaultxavi

Subscribers: cedric, #reviewers, #committers

Tags: #efl_api

Differential Revision: https://phab.enlightenment.org/D8032
This commit is contained in:
Mike Blumenkrantz 2019-02-27 13:17:16 -05:00
parent 6326e18b3f
commit 335936e79d
18 changed files with 172 additions and 155 deletions

View File

@ -14,6 +14,7 @@ elm_public_eolian_files = \
lib/elementary/efl_ui_image.eo \
lib/elementary/efl_ui_image_zoomable.eo \
lib/elementary/efl_ui_layout.eo \
lib/elementary/efl_ui_layout_base.eo \
lib/elementary/efl_ui_nstate.eo \
lib/elementary/efl_ui_navigation_bar.eo \
lib/elementary/efl_ui_navigation_bar_part.eo \

View File

@ -171,6 +171,7 @@ EAPI void efl_ui_focus_relation_free(Efl_Ui_Focus_Relations *rel);
# include <efl_ui_theme.eo.h>
# include <efl_config_global.eo.h>
# include <efl_ui_widget_part.eo.h>
# include <efl_ui_layout_base.eo.h>
# include <efl_ui_layout.eo.h>
# include <efl_ui_layout_part.eo.h>
# include <efl_ui_layout_part_box.eo.h>

View File

@ -1,4 +1,4 @@
class @beta Efl.Ui.Bg extends Efl.Ui.Layout implements Efl.Gfx.Color, Efl.Gfx.Image, Efl.Gfx.Image_Load_Controller
class @beta Efl.Ui.Bg extends Efl.Ui.Layout_Base implements Efl.File, Efl.Gfx.Color, Efl.Gfx.Image, Efl.Gfx.Image_Load_Controller
{
[[The bg (background) widget is used for setting (solid) background decorations
for a window (unless it has transparency enabled) or for any container object. It

View File

@ -15,7 +15,7 @@
#include "elm_part_helper.h"
#include "elm_entry.eo.h"
#define MY_CLASS EFL_UI_LAYOUT_CLASS
#define MY_CLASS EFL_UI_LAYOUT_BASE_CLASS
#define MY_CLASS_PFX efl_ui_layout
#define MY_CLASS_NAME "Efl.Ui.Layout"
@ -133,7 +133,7 @@ struct _Efl_Ui_Layout_Sub_Object_Cursor
#define MY_CLASS_NAME_LEGACY "elm_layout"
static void
_efl_ui_layout_class_constructor(Efl_Class *klass)
_efl_ui_layout_base_class_constructor(Efl_Class *klass)
{
evas_smart_legacy_type_register(MY_CLASS_NAME_LEGACY, klass);
}
@ -423,7 +423,7 @@ _visuals_refresh(Evas_Object *obj,
}
EOLIAN static Eina_Bool
_efl_ui_layout_efl_ui_widget_on_disabled_update(Eo *obj, Efl_Ui_Layout_Data *_pd EINA_UNUSED, Eina_Bool disabled)
_efl_ui_layout_base_efl_ui_widget_on_disabled_update(Eo *obj, Efl_Ui_Layout_Data *_pd EINA_UNUSED, Eina_Bool disabled)
{
ELM_WIDGET_DATA_GET_OR_RETURN(obj, wd, EINA_FALSE);
@ -478,7 +478,7 @@ _efl_ui_layout_theme_internal(Eo *obj, Efl_Ui_Layout_Data *sd)
}
EOLIAN static Efl_Ui_Theme_Apply_Result
_efl_ui_layout_efl_ui_widget_theme_apply(Eo *obj, Efl_Ui_Layout_Data *sd)
_efl_ui_layout_base_efl_ui_widget_theme_apply(Eo *obj, Efl_Ui_Layout_Data *sd)
{
Efl_Ui_Theme_Apply_Result theme_apply_ret = EFL_UI_THEME_APPLY_RESULT_FAIL;
@ -490,7 +490,7 @@ _efl_ui_layout_efl_ui_widget_theme_apply(Eo *obj, Efl_Ui_Layout_Data *sd)
}
EOLIAN static Eina_Bool
_efl_ui_layout_efl_ui_focus_object_on_focus_update(Eo *obj, Efl_Ui_Layout_Data *_pd EINA_UNUSED)
_efl_ui_layout_base_efl_ui_focus_object_on_focus_update(Eo *obj, Efl_Ui_Layout_Data *_pd EINA_UNUSED)
{
ELM_WIDGET_DATA_GET_OR_RETURN(obj, wd, EINA_FALSE);
@ -522,7 +522,7 @@ _efl_ui_layout_efl_ui_focus_object_on_focus_update(Eo *obj, Efl_Ui_Layout_Data *
}
EOLIAN static Eina_Bool
_efl_ui_layout_efl_ui_widget_widget_sub_object_add(Eo *obj, Efl_Ui_Layout_Data *_pd EINA_UNUSED, Evas_Object *sobj)
_efl_ui_layout_base_efl_ui_widget_widget_sub_object_add(Eo *obj, Efl_Ui_Layout_Data *_pd EINA_UNUSED, Evas_Object *sobj)
{
Eina_Bool int_ret = EINA_FALSE;
@ -539,7 +539,7 @@ _efl_ui_layout_efl_ui_widget_widget_sub_object_add(Eo *obj, Efl_Ui_Layout_Data *
}
EOLIAN static Eina_Bool
_efl_ui_layout_efl_ui_widget_widget_sub_object_del(Eo *obj, Efl_Ui_Layout_Data *sd, Evas_Object *sobj)
_efl_ui_layout_base_efl_ui_widget_widget_sub_object_del(Eo *obj, Efl_Ui_Layout_Data *sd, Evas_Object *sobj)
{
Eina_List *l;
Efl_Ui_Layout_Sub_Object_Data *sub_d;
@ -732,7 +732,7 @@ _on_size_evaluate_signal(void *data,
}
EOLIAN static void
_efl_ui_layout_efl_canvas_group_group_add(Eo *obj, Efl_Ui_Layout_Data *_pd EINA_UNUSED)
_efl_ui_layout_base_efl_canvas_group_group_add(Eo *obj, Efl_Ui_Layout_Data *_pd EINA_UNUSED)
{
Evas_Object *edje;
@ -757,7 +757,7 @@ _efl_ui_layout_efl_canvas_group_group_add(Eo *obj, Efl_Ui_Layout_Data *_pd EINA_
}
EOLIAN static void
_efl_ui_layout_efl_canvas_group_group_del(Eo *obj, Efl_Ui_Layout_Data *sd)
_efl_ui_layout_base_efl_canvas_group_group_del(Eo *obj, Efl_Ui_Layout_Data *sd)
{
Efl_Ui_Layout_Sub_Object_Data *sub_d;
Efl_Ui_Layout_Sub_Object_Cursor *pc;
@ -823,7 +823,7 @@ _efl_ui_layout_efl_canvas_group_group_del(Eo *obj, Efl_Ui_Layout_Data *sd)
/* rewrite or extend this one on your derived class as to suit your
* needs */
EOLIAN static void
_efl_ui_layout_efl_canvas_group_group_calculate(Eo *obj, Efl_Ui_Layout_Data *sd)
_efl_ui_layout_base_efl_canvas_group_group_calculate(Eo *obj, Efl_Ui_Layout_Data *sd)
{
if (sd->needs_size_calc)
{
@ -852,9 +852,10 @@ _parts_cursors_find(Efl_Ui_Layout_Data *sd,
* widget inheriting from elm_layout */
EOLIAN static Eina_Error
_efl_ui_layout_efl_file_load(Eo *obj, Efl_Ui_Layout_Data *sd)
_efl_ui_layout_efl_file_load(Eo *obj, void *_pd EINA_UNUSED)
{
Eina_Error err;
Efl_Ui_Layout_Data *sd = efl_data_scope_get(obj, MY_CLASS);
ELM_WIDGET_DATA_GET_OR_RETURN(obj, wd, EINA_FALSE);
@ -876,49 +877,49 @@ _efl_ui_layout_efl_file_load(Eo *obj, Efl_Ui_Layout_Data *sd)
}
EOLIAN static Eina_Error
_efl_ui_layout_efl_file_file_set(Eo *obj, Efl_Ui_Layout_Data *sd EINA_UNUSED, const char *file)
_efl_ui_layout_efl_file_file_set(Eo *obj, void *_pd EINA_UNUSED, const char *file)
{
ELM_WIDGET_DATA_GET_OR_RETURN(obj, wd, EFL_GFX_IMAGE_LOAD_ERROR_GENERIC);
return efl_file_set(wd->resize_obj, file);
}
EOLIAN static const char *
_efl_ui_layout_efl_file_file_get(const Eo *obj, Efl_Ui_Layout_Data *sd EINA_UNUSED)
_efl_ui_layout_efl_file_file_get(const Eo *obj, void *_pd EINA_UNUSED)
{
ELM_WIDGET_DATA_GET_OR_RETURN(obj, wd, NULL);
return efl_file_get(wd->resize_obj);
}
EOLIAN static void
_efl_ui_layout_efl_file_key_set(Eo *obj, Efl_Ui_Layout_Data *sd EINA_UNUSED, const char *key)
_efl_ui_layout_efl_file_key_set(Eo *obj, void *_pd EINA_UNUSED, const char *key)
{
ELM_WIDGET_DATA_GET_OR_RETURN(obj, wd);
return efl_file_key_set(wd->resize_obj, key);
}
EOLIAN static const char *
_efl_ui_layout_efl_file_key_get(const Eo *obj, Efl_Ui_Layout_Data *sd EINA_UNUSED)
_efl_ui_layout_efl_file_key_get(const Eo *obj, void *_pd EINA_UNUSED)
{
ELM_WIDGET_DATA_GET_OR_RETURN(obj, wd, NULL);
return efl_file_key_get(wd->resize_obj);
}
EOLIAN static Eina_Error
_efl_ui_layout_efl_file_mmap_set(Eo *obj, Efl_Ui_Layout_Data *sd EINA_UNUSED, const Eina_File *file)
_efl_ui_layout_efl_file_mmap_set(Eo *obj, void *_pd EINA_UNUSED, const Eina_File *file)
{
ELM_WIDGET_DATA_GET_OR_RETURN(obj, wd, EINA_FALSE);
return efl_file_mmap_set(wd->resize_obj, file);
}
EOLIAN static const Eina_File *
_efl_ui_layout_efl_file_mmap_get(const Eo *obj, Efl_Ui_Layout_Data *sd EINA_UNUSED)
_efl_ui_layout_efl_file_mmap_get(const Eo *obj, void *_pd EINA_UNUSED)
{
ELM_WIDGET_DATA_GET_OR_RETURN(obj, wd, NULL);
return efl_file_mmap_get(wd->resize_obj);
}
EOLIAN static Efl_Ui_Theme_Apply_Result
_efl_ui_layout_theme_set(Eo *obj, Efl_Ui_Layout_Data *sd, const char *klass, const char *group, const char *style)
_efl_ui_layout_base_theme_set(Eo *obj, Efl_Ui_Layout_Data *sd, const char *klass, const char *group, const char *style)
{
Eina_Bool changed = EINA_FALSE;
@ -940,7 +941,7 @@ _efl_ui_layout_theme_set(Eo *obj, Efl_Ui_Layout_Data *sd, const char *klass, con
}
EOLIAN static void
_efl_ui_layout_efl_layout_signal_signal_emit(Eo *obj, Efl_Ui_Layout_Data *_pd EINA_UNUSED, const char *emission, const char *source)
_efl_ui_layout_base_efl_layout_signal_signal_emit(Eo *obj, Efl_Ui_Layout_Data *_pd EINA_UNUSED, const char *emission, const char *source)
{
// Don't do anything else than call forward here
EINA_SAFETY_ON_TRUE_RETURN(efl_invalidated_get(obj));
@ -949,7 +950,7 @@ _efl_ui_layout_efl_layout_signal_signal_emit(Eo *obj, Efl_Ui_Layout_Data *_pd EI
}
static Eina_Bool
_efl_ui_layout_efl_layout_signal_signal_callback_add(Eo *obj, Efl_Ui_Layout_Data *pd EINA_UNUSED, const char *emission, const char *source, void *func_data, EflLayoutSignalCb func, Eina_Free_Cb func_free_cb)
_efl_ui_layout_base_efl_layout_signal_signal_callback_add(Eo *obj, Efl_Ui_Layout_Data *pd EINA_UNUSED, const char *emission, const char *source, void *func_data, EflLayoutSignalCb func, Eina_Free_Cb func_free_cb)
{
// Don't do anything else than call forward here
ELM_WIDGET_DATA_GET_OR_RETURN(obj, wd, EINA_FALSE);
@ -957,7 +958,7 @@ _efl_ui_layout_efl_layout_signal_signal_callback_add(Eo *obj, Efl_Ui_Layout_Data
}
static Eina_Bool
_efl_ui_layout_efl_layout_signal_signal_callback_del(Eo *obj, Efl_Ui_Layout_Data *pd EINA_UNUSED, const char *emission, const char *source, void *func_data, EflLayoutSignalCb func, Eina_Free_Cb func_free_cb)
_efl_ui_layout_base_efl_layout_signal_signal_callback_del(Eo *obj, Efl_Ui_Layout_Data *pd EINA_UNUSED, const char *emission, const char *source, void *func_data, EflLayoutSignalCb func, Eina_Free_Cb func_free_cb)
{
// Don't do anything else than call forward here
ELM_WIDGET_DATA_GET_OR_RETURN(obj, wd, EINA_FALSE);
@ -1151,7 +1152,7 @@ _efl_ui_layout_content_unset(Eo *obj, Efl_Ui_Layout_Data *sd, const char *part)
}
EOLIAN static Eina_Bool
_efl_ui_layout_efl_container_content_remove(Eo *obj, Efl_Ui_Layout_Data *sd EINA_UNUSED,
_efl_ui_layout_base_efl_container_content_remove(Eo *obj, Efl_Ui_Layout_Data *sd EINA_UNUSED,
Efl_Gfx_Entity *content)
{
ELM_WIDGET_DATA_GET_OR_RETURN(obj, wd, EINA_FALSE);
@ -1232,13 +1233,13 @@ _sub_iterator_create(Eo *eo_obj, Efl_Ui_Layout_Data *sd)
}
EOLIAN static Eina_Iterator *
_efl_ui_layout_efl_container_content_iterate(Eo *eo_obj EINA_UNUSED, Efl_Ui_Layout_Data *sd)
_efl_ui_layout_base_efl_container_content_iterate(Eo *eo_obj EINA_UNUSED, Efl_Ui_Layout_Data *sd)
{
return _sub_iterator_create(eo_obj, sd);
}
EOLIAN static int
_efl_ui_layout_efl_container_content_count(Eo *eo_obj EINA_UNUSED, Efl_Ui_Layout_Data *sd)
_efl_ui_layout_base_efl_container_content_count(Eo *eo_obj EINA_UNUSED, Efl_Ui_Layout_Data *sd)
{
return eina_list_count(sd->subs);
}
@ -1678,7 +1679,7 @@ elm_layout_edje_get(const Eo *obj)
}
EOLIAN static const char *
_efl_ui_layout_efl_layout_group_group_data_get(const Eo *obj, Efl_Ui_Layout_Data *_pd EINA_UNUSED, const char *key)
_efl_ui_layout_base_efl_layout_group_group_data_get(const Eo *obj, Efl_Ui_Layout_Data *_pd EINA_UNUSED, const char *key)
{
ELM_WIDGET_DATA_GET_OR_RETURN(obj, wd, NULL);
@ -1686,7 +1687,7 @@ _efl_ui_layout_efl_layout_group_group_data_get(const Eo *obj, Efl_Ui_Layout_Data
}
EOLIAN static Eina_Size2D
_efl_ui_layout_efl_layout_group_group_size_min_get(const Eo *obj, Efl_Ui_Layout_Data *_pd EINA_UNUSED)
_efl_ui_layout_base_efl_layout_group_group_size_min_get(const Eo *obj, Efl_Ui_Layout_Data *_pd EINA_UNUSED)
{
ELM_WIDGET_DATA_GET_OR_RETURN(obj, wd, EINA_SIZE2D(0, 0));
@ -1694,7 +1695,7 @@ _efl_ui_layout_efl_layout_group_group_size_min_get(const Eo *obj, Efl_Ui_Layout_
}
EOLIAN static Eina_Size2D
_efl_ui_layout_efl_layout_group_group_size_max_get(const Eo *obj, Efl_Ui_Layout_Data *_pd EINA_UNUSED)
_efl_ui_layout_base_efl_layout_group_group_size_max_get(const Eo *obj, Efl_Ui_Layout_Data *_pd EINA_UNUSED)
{
ELM_WIDGET_DATA_GET_OR_RETURN(obj, wd, EINA_SIZE2D(0, 0));
@ -1702,7 +1703,7 @@ _efl_ui_layout_efl_layout_group_group_size_max_get(const Eo *obj, Efl_Ui_Layout_
}
EOLIAN static Eina_Bool
_efl_ui_layout_efl_layout_group_part_exist_get(const Eo *obj, Efl_Ui_Layout_Data *_pd EINA_UNUSED, const char *part)
_efl_ui_layout_base_efl_layout_group_part_exist_get(const Eo *obj, Efl_Ui_Layout_Data *_pd EINA_UNUSED, const char *part)
{
ELM_WIDGET_DATA_GET_OR_RETURN(obj, wd, EINA_FALSE);
@ -1737,7 +1738,7 @@ elm_layout_sizing_restricted_eval(Eo *obj, Eina_Bool w, Eina_Bool h)
}
EOLIAN static int
_efl_ui_layout_efl_layout_calc_calc_freeze(Eo *obj, Efl_Ui_Layout_Data *sd)
_efl_ui_layout_base_efl_layout_calc_calc_freeze(Eo *obj, Efl_Ui_Layout_Data *sd)
{
ELM_WIDGET_DATA_GET_OR_RETURN(obj, wd, 0);
@ -1749,7 +1750,7 @@ _efl_ui_layout_efl_layout_calc_calc_freeze(Eo *obj, Efl_Ui_Layout_Data *sd)
}
EOLIAN static int
_efl_ui_layout_efl_layout_calc_calc_thaw(Eo *obj, Efl_Ui_Layout_Data *sd)
_efl_ui_layout_base_efl_layout_calc_calc_thaw(Eo *obj, Efl_Ui_Layout_Data *sd)
{
ELM_WIDGET_DATA_GET_OR_RETURN(obj, wd, 0);
@ -1763,35 +1764,35 @@ _efl_ui_layout_efl_layout_calc_calc_thaw(Eo *obj, Efl_Ui_Layout_Data *sd)
}
EOLIAN void
_efl_ui_layout_efl_layout_calc_calc_auto_update_hints_set(Eo *obj EINA_UNUSED, Efl_Ui_Layout_Data *sd EINA_UNUSED, Eina_Bool update)
_efl_ui_layout_base_efl_layout_calc_calc_auto_update_hints_set(Eo *obj EINA_UNUSED, Efl_Ui_Layout_Data *sd EINA_UNUSED, Eina_Bool update)
{
ELM_WIDGET_DATA_GET_OR_RETURN(obj, wd);
efl_layout_calc_auto_update_hints_set(wd->resize_obj, update);
}
EOLIAN Eina_Bool
_efl_ui_layout_efl_layout_calc_calc_auto_update_hints_get(const Eo *obj EINA_UNUSED, Efl_Ui_Layout_Data *sd EINA_UNUSED)
_efl_ui_layout_base_efl_layout_calc_calc_auto_update_hints_get(const Eo *obj EINA_UNUSED, Efl_Ui_Layout_Data *sd EINA_UNUSED)
{
ELM_WIDGET_DATA_GET_OR_RETURN(obj, wd, EINA_FALSE);
return efl_layout_calc_auto_update_hints_get(wd->resize_obj);
}
EOLIAN Eina_Size2D
_efl_ui_layout_efl_layout_calc_calc_size_min(Eo *obj EINA_UNUSED, Efl_Ui_Layout_Data *sd EINA_UNUSED, Eina_Size2D restricted)
_efl_ui_layout_base_efl_layout_calc_calc_size_min(Eo *obj EINA_UNUSED, Efl_Ui_Layout_Data *sd EINA_UNUSED, Eina_Size2D restricted)
{
ELM_WIDGET_DATA_GET_OR_RETURN(obj, wd, restricted);
return efl_layout_calc_size_min(wd->resize_obj, restricted);
}
EOLIAN Eina_Rect
_efl_ui_layout_efl_layout_calc_calc_parts_extends(Eo *obj EINA_UNUSED, Efl_Ui_Layout_Data *sd EINA_UNUSED)
_efl_ui_layout_base_efl_layout_calc_calc_parts_extends(Eo *obj EINA_UNUSED, Efl_Ui_Layout_Data *sd EINA_UNUSED)
{
ELM_WIDGET_DATA_GET_OR_RETURN(obj, wd, (Eina_Rect){.rect = {0, 0, 0, 0}});
return efl_layout_calc_parts_extends(wd->resize_obj);
}
EOLIAN void
_efl_ui_layout_efl_layout_calc_calc_force(Eo *obj EINA_UNUSED, Efl_Ui_Layout_Data *sd EINA_UNUSED)
_efl_ui_layout_base_efl_layout_calc_calc_force(Eo *obj EINA_UNUSED, Efl_Ui_Layout_Data *sd EINA_UNUSED)
{
ELM_WIDGET_DATA_GET_OR_RETURN(obj, wd);
efl_layout_calc_force(wd->resize_obj);
@ -1962,7 +1963,7 @@ elm_layout_edje_object_can_access_get(const Eo *obj)
}
EOLIAN static void
_efl_ui_layout_efl_object_dbg_info_get(Eo *eo_obj, Efl_Ui_Layout_Data *_pd EINA_UNUSED, Efl_Dbg_Info *root)
_efl_ui_layout_base_efl_object_dbg_info_get(Eo *eo_obj, Efl_Ui_Layout_Data *_pd EINA_UNUSED, Efl_Dbg_Info *root)
{
efl_dbg_info_get(efl_super(eo_obj, MY_CLASS), root);
ELM_WIDGET_DATA_GET_OR_RETURN(eo_obj, wd);
@ -2223,7 +2224,7 @@ _efl_ui_layout_connect_hash(Efl_Ui_Layout_Data *pd)
}
EOLIAN static void
_efl_ui_layout_efl_ui_view_model_set(Eo *obj, Efl_Ui_Layout_Data *pd, Efl_Model *model)
_efl_ui_layout_base_efl_ui_view_model_set(Eo *obj, Efl_Ui_Layout_Data *pd, Efl_Model *model)
{
Eina_Stringshare *key;
Eina_Hash_Tuple *tuple;
@ -2276,13 +2277,13 @@ _efl_ui_layout_efl_ui_view_model_set(Eo *obj, Efl_Ui_Layout_Data *pd, Efl_Model
}
EOLIAN static Efl_Model *
_efl_ui_layout_efl_ui_view_model_get(const Eo *obj EINA_UNUSED, Efl_Ui_Layout_Data *pd)
_efl_ui_layout_base_efl_ui_view_model_get(const Eo *obj EINA_UNUSED, Efl_Ui_Layout_Data *pd)
{
return pd->connect.model;
}
EOLIAN static void
_efl_ui_layout_efl_ui_property_bind_property_bind(Eo *obj EINA_UNUSED, Efl_Ui_Layout_Data *pd, const char *key, const char *property)
_efl_ui_layout_base_efl_ui_property_bind_property_bind(Eo *obj EINA_UNUSED, Efl_Ui_Layout_Data *pd, const char *key, const char *property)
{
EINA_SAFETY_ON_NULL_RETURN(key);
Eina_Stringshare *sprop;
@ -2331,7 +2332,7 @@ _efl_ui_layout_efl_ui_property_bind_property_bind(Eo *obj EINA_UNUSED, Efl_Ui_La
}
EOLIAN static void
_efl_ui_layout_efl_ui_factory_bind_factory_bind(Eo *obj EINA_UNUSED, Efl_Ui_Layout_Data *pd,
_efl_ui_layout_base_efl_ui_factory_bind_factory_bind(Eo *obj EINA_UNUSED, Efl_Ui_Layout_Data *pd,
const char *key, Efl_Ui_Factory *factory)
{
EINA_SAFETY_ON_NULL_RETURN(key);
@ -2380,7 +2381,7 @@ _efl_ui_layout_efl_ui_factory_bind_factory_bind(Eo *obj EINA_UNUSED, Efl_Ui_Layo
}
EOLIAN static Eo *
_efl_ui_layout_efl_object_constructor(Eo *obj, Efl_Ui_Layout_Data *sd)
_efl_ui_layout_base_efl_object_constructor(Eo *obj, Efl_Ui_Layout_Data *sd)
{
sd->obj = obj;
obj = efl_constructor(efl_super(obj, MY_CLASS));
@ -2391,7 +2392,7 @@ _efl_ui_layout_efl_object_constructor(Eo *obj, Efl_Ui_Layout_Data *sd)
}
EOLIAN static Efl_Object*
_efl_ui_layout_efl_object_finalize(Eo *obj, Efl_Ui_Layout_Data *pd EINA_UNUSED)
_efl_ui_layout_base_efl_object_finalize(Eo *obj, Efl_Ui_Layout_Data *pd EINA_UNUSED)
{
Eo *eo;
ELM_WIDGET_DATA_GET_OR_RETURN(obj, wd, NULL);
@ -2404,14 +2405,14 @@ _efl_ui_layout_efl_object_finalize(Eo *obj, Efl_Ui_Layout_Data *pd EINA_UNUSED)
}
EOLIAN static void
_efl_ui_layout_efl_layout_signal_message_send(Eo *obj, Efl_Ui_Layout_Data *pd EINA_UNUSED, int id, const Eina_Value msg)
_efl_ui_layout_base_efl_layout_signal_message_send(Eo *obj, Efl_Ui_Layout_Data *pd EINA_UNUSED, int id, const Eina_Value msg)
{
ELM_WIDGET_DATA_GET_OR_RETURN(obj, wd);
efl_layout_signal_message_send(wd->resize_obj, id, msg);
}
EOLIAN static void
_efl_ui_layout_efl_layout_signal_signal_process(Eo *obj, Efl_Ui_Layout_Data *pd EINA_UNUSED, Eina_Bool recurse)
_efl_ui_layout_base_efl_layout_signal_signal_process(Eo *obj, Efl_Ui_Layout_Data *pd EINA_UNUSED, Eina_Bool recurse)
{
ELM_WIDGET_DATA_GET_OR_RETURN(obj, wd);
efl_layout_signal_process(wd->resize_obj, recurse);
@ -2420,7 +2421,7 @@ _efl_ui_layout_efl_layout_signal_signal_process(Eo *obj, Efl_Ui_Layout_Data *pd
/* Efl.Part implementation */
EOLIAN static Eo *
_efl_ui_layout_efl_part_part_get(const Eo *obj, Efl_Ui_Layout_Data *sd EINA_UNUSED, const char *part)
_efl_ui_layout_base_efl_part_part_get(const Eo *obj, Efl_Ui_Layout_Data *sd EINA_UNUSED, const char *part)
{
Efl_Canvas_Layout_Part_Type type = EFL_CANVAS_LAYOUT_PART_TYPE_NONE;
@ -2485,7 +2486,7 @@ _efl_ui_layout_efl_part_part_get(const Eo *obj, Efl_Ui_Layout_Data *sd EINA_UNUS
}
static const char *
_efl_ui_layout_default_content_part_get(const Eo *obj, Efl_Ui_Layout_Data *sd EINA_UNUSED)
_efl_ui_layout_base_default_content_part_get(const Eo *obj, Efl_Ui_Layout_Data *sd EINA_UNUSED)
{
const char *part = NULL;
if (!_elm_layout_part_aliasing_eval(obj, &part, EINA_FALSE))
@ -2494,7 +2495,7 @@ _efl_ui_layout_default_content_part_get(const Eo *obj, Efl_Ui_Layout_Data *sd EI
}
static const char *
_efl_ui_layout_default_text_part_get(const Eo *obj, Efl_Ui_Layout_Data *sd EINA_UNUSED)
_efl_ui_layout_base_default_text_part_get(const Eo *obj, Efl_Ui_Layout_Data *sd EINA_UNUSED)
{
const char *part = NULL;
if (!_elm_layout_part_aliasing_eval(obj, &part, EINA_TRUE))
@ -2518,11 +2519,11 @@ _efl_ui_layout_default_text_part_get(const Eo *obj, Efl_Ui_Layout_Data *sd EINA_
ELM_PART_OVERRIDE_TEXT_MARKUP_SET_FULL(part_typename, typename, ELM_PART_OVERRIDE_INTERNALS_FETCH(CLASS, TYPENAME)) \
/* Efl.Ui.Layout_Part_Content */
CONTENT_FULL(efl_ui_layout_part_content, efl_ui_layout, EFL_UI_LAYOUT, Efl_Ui_Layout_Data)
CONTENT_FULL(efl_ui_layout_part_content, efl_ui_layout, EFL_UI_LAYOUT_BASE, Efl_Ui_Layout_Data)
/* Efl.Ui.Layout_Part_Text */
TEXT_FULL(efl_ui_layout_part_text, efl_ui_layout, EFL_UI_LAYOUT, Efl_Ui_Layout_Data)
MARKUP_FULL(efl_ui_layout_part_text, efl_ui_layout, EFL_UI_LAYOUT, Efl_Ui_Layout_Data)
TEXT_FULL(efl_ui_layout_part_text, efl_ui_layout, EFL_UI_LAYOUT_BASE, Efl_Ui_Layout_Data)
MARKUP_FULL(efl_ui_layout_part_text, efl_ui_layout, EFL_UI_LAYOUT_BASE, Efl_Ui_Layout_Data)
EOLIAN static const char *
_efl_ui_layout_part_text_efl_ui_l10n_l10n_text_get(const Eo *obj, void *_pd EINA_UNUSED, const char **domain)
@ -2539,9 +2540,9 @@ _efl_ui_layout_part_text_efl_ui_l10n_l10n_text_set(Eo *obj, void *_pd EINA_UNUSE
}
/* Efl.Ui.Layout_Part_Legacy */
CONTENT_FULL(efl_ui_layout_part_legacy, efl_ui_layout, EFL_UI_LAYOUT, Efl_Ui_Layout_Data)
TEXT_FULL(efl_ui_layout_part_legacy, efl_ui_layout, EFL_UI_LAYOUT, Efl_Ui_Layout_Data)
MARKUP_FULL(efl_ui_layout_part_legacy, efl_ui_layout, EFL_UI_LAYOUT, Efl_Ui_Layout_Data)
CONTENT_FULL(efl_ui_layout_part_legacy, efl_ui_layout, EFL_UI_LAYOUT_BASE, Efl_Ui_Layout_Data)
TEXT_FULL(efl_ui_layout_part_legacy, efl_ui_layout, EFL_UI_LAYOUT_BASE, Efl_Ui_Layout_Data)
MARKUP_FULL(efl_ui_layout_part_legacy, efl_ui_layout, EFL_UI_LAYOUT_BASE, Efl_Ui_Layout_Data)
EOLIAN static const char *
_efl_ui_layout_part_legacy_efl_ui_l10n_l10n_text_get(const Eo *obj, void *_pd EINA_UNUSED, const char **domain)
@ -2600,15 +2601,16 @@ EFL_FUNC_BODY_CONST(elm_layout_content_aliases_get, const Elm_Layout_Part_Alias_
ELM_LAYOUT_CONTENT_ALIASES_IMPLEMENT(MY_CLASS_PFX)
ELM_LAYOUT_TEXT_ALIASES_IMPLEMENT(MY_CLASS_PFX)
#define EFL_UI_LAYOUT_EXTRA_OPS \
EFL_CANVAS_GROUP_ADD_DEL_OPS(efl_ui_layout), \
ELM_PART_CONTENT_DEFAULT_OPS(efl_ui_layout), \
ELM_PART_TEXT_DEFAULT_OPS(efl_ui_layout), \
#define EFL_UI_LAYOUT_BASE_EXTRA_OPS \
EFL_CANVAS_GROUP_ADD_DEL_OPS(efl_ui_layout_base), \
ELM_PART_CONTENT_DEFAULT_OPS(efl_ui_layout_base), \
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_efl_object_dbg_info_get)
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"
#include "efl_ui_layout_legacy.eo.h"

View File

@ -1,87 +1,13 @@
import efl_ui;
class @beta Efl.Ui.Layout extends Efl.Ui.Widget implements Efl.Container, Efl.File,
Efl.Ui.View, Efl.Ui.Property_Bind, Efl.Ui.Factory_Bind,
Efl.Layout.Calc, Efl.Layout.Signal,
Efl.Layout.Group
class @beta Efl.Ui.Layout extends Efl.Ui.Layout_Base implements Efl.File
{
[[Elementary layout class]]
methods {
@property theme {
[[The theme of this widget, defines which edje group will be used.
Based on the type of widget ($klass), a given $group and a
$style (usually "default"), the edje group name will be formed
for this object.
Widgets that inherit from this class will call this function
automatically so it should not be called by applications, unless
you are dealing directly with a @Efl.Ui.Layout object.
]]
set {
[[Sets the edje group from the elementary theme that will be used
as layout. Note that $style will be the new style of this object,
as in an @Efl.Ui.Widget.style. As a consequence this function can
only be called during construction of the object, before finalize.
If this returns $false the widget is very likely to become
non-functioning.
]]
return: Efl.Ui.Theme_Apply_Result(0);
[[Whether the style was successfully applied or not, see
the values of @Efl.Ui.Theme_Apply_Result for more information.]]
}
/*
TODO:
get {
[[Get information about the current theme in use.]]
}
*/
values {
klass: string; [[The class of the group, eg. "button".]]
group: string("base"); [[The group, eg. "base".]]
style: string("default"); [[The style to use, eg "default".]]
}
}
}
data: null;
implements {
class.constructor;
Efl.Object.constructor;
Efl.Object.finalize;
Efl.File.file { get; set; }
Efl.File.key { get; set; }
Efl.File.mmap { get; set; }
Efl.File.load;
Efl.Canvas.Group.group_calculate;
Efl.Layout.Calc.calc_freeze;
Efl.Layout.Calc.calc_thaw;
Efl.Layout.Calc.calc_auto_update_hints { get; set; }
Efl.Layout.Calc.calc_size_min;
Efl.Layout.Calc.calc_parts_extends;
Efl.Layout.Calc.calc_force;
Efl.Layout.Signal.signal_callback_add;
Efl.Layout.Signal.signal_callback_del;
Efl.Layout.Signal.signal_emit;
Efl.Layout.Signal.message_send;
Efl.Layout.Signal.signal_process;
Efl.Layout.Group.group_data { get; }
Efl.Layout.Group.group_size_min { get; }
Efl.Layout.Group.group_size_max { get; }
Efl.Layout.Group.part_exist { get; }
Efl.Ui.Widget.widget_sub_object_add;
Efl.Ui.Widget.theme_apply;
Efl.Ui.Widget.on_disabled_update;
Efl.Ui.Widget.widget_sub_object_del;
Efl.Ui.Focus.Object.on_focus_update;
Efl.Container.content_count;
Efl.Container.content_remove;
Efl.Container.content_iterate;
Efl.Part.part_get;
Efl.Ui.View.model { get; set; }
Efl.Ui.Property_Bind.property_bind;
Efl.Ui.Factory_Bind.factory_bind;
}
events {
theme,changed: void; [[Called when theme changed]]
}
}

View File

@ -0,0 +1,85 @@
import efl_ui;
abstract @beta Efl.Ui.Layout_Base extends Efl.Ui.Widget implements Efl.Container,
Efl.Ui.View, Efl.Ui.Property_Bind, Efl.Ui.Factory_Bind,
Efl.Layout.Calc, Efl.Layout.Signal,
Efl.Layout.Group
{
[[Elementary layout abstract]]
eo_prefix: efl_ui_layout;
data: Efl_Ui_Layout_Data;
methods {
@property theme {
[[The theme of this widget, defines which edje group will be used.
Based on the type of widget ($klass), a given $group and a
$style (usually "default"), the edje group name will be formed
for this object.
Widgets that inherit from this class will call this function
automatically so it should not be called by applications, unless
you are dealing directly with a @Efl.Ui.Layout object.
]]
set {
[[Sets the edje group from the elementary theme that will be used
as layout. Note that $style will be the new style of this object,
as in an @Efl.Ui.Widget.style. As a consequence this function can
only be called during construction of the object, before finalize.
If this returns $false the widget is very likely to become
non-functioning.
]]
return: Efl.Ui.Theme_Apply_Result(0);
[[Whether the style was successfully applied or not, see
the values of @Efl.Ui.Theme_Apply_Result for more information.]]
}
/*
TODO:
get {
[[Get information about the current theme in use.]]
}
*/
values {
klass: string; [[The class of the group, eg. "button".]]
group: string("base"); [[The group, eg. "base".]]
style: string("default"); [[The style to use, eg "default".]]
}
}
}
implements {
class.constructor;
Efl.Object.constructor;
Efl.Object.finalize;
Efl.Canvas.Group.group_calculate;
Efl.Layout.Calc.calc_freeze;
Efl.Layout.Calc.calc_thaw;
Efl.Layout.Calc.calc_auto_update_hints { get; set; }
Efl.Layout.Calc.calc_size_min;
Efl.Layout.Calc.calc_parts_extends;
Efl.Layout.Calc.calc_force;
Efl.Layout.Signal.signal_callback_add;
Efl.Layout.Signal.signal_callback_del;
Efl.Layout.Signal.signal_emit;
Efl.Layout.Signal.message_send;
Efl.Layout.Signal.signal_process;
Efl.Layout.Group.group_data { get; }
Efl.Layout.Group.group_size_min { get; }
Efl.Layout.Group.group_size_max { get; }
Efl.Layout.Group.part_exist { get; }
Efl.Ui.Widget.widget_sub_object_add;
Efl.Ui.Widget.theme_apply;
Efl.Ui.Widget.on_disabled_update;
Efl.Ui.Widget.widget_sub_object_del;
Efl.Ui.Focus.Object.on_focus_update;
Efl.Container.content_count;
Efl.Container.content_remove;
Efl.Container.content_iterate;
Efl.Part.part_get;
Efl.Ui.View.model { get; set; }
Efl.Ui.Property_Bind.property_bind;
Efl.Ui.Factory_Bind.factory_bind;
}
events {
theme,changed: void; [[Called when theme changed]]
}
}

View File

@ -67,7 +67,7 @@ EOLIAN static void
_efl_ui_layout_part_box_real_part_set(Eo *obj, Efl_Ui_Layout_Box_Data *pd, Eo *layout, const char *part)
{
pd->obj = layout;
pd->sd = efl_data_xref(pd->obj, EFL_UI_LAYOUT_CLASS, obj);
pd->sd = efl_data_xref(pd->obj, EFL_UI_LAYOUT_BASE_CLASS, obj);
eina_stringshare_replace(&pd->part, part);
pd->temp = 1;
}
@ -225,7 +225,7 @@ EOLIAN static void
_efl_ui_layout_part_table_real_part_set(Eo *obj, Efl_Ui_Layout_Table_Data *pd, Eo *layout, const char *part)
{
pd->obj = layout;
pd->sd = efl_data_xref(pd->obj, EFL_UI_LAYOUT_CLASS, obj);
pd->sd = efl_data_xref(pd->obj, EFL_UI_LAYOUT_BASE_CLASS, obj);
eina_stringshare_replace(&pd->part, part);
pd->temp = 1;
}

View File

@ -15,7 +15,7 @@
EOLIAN static void
_efl_ui_navigation_layout_bar_set(Eo *obj, Efl_Ui_Navigation_Layout_Data *pd, Efl_Ui_Layout *bar)
{
EINA_SAFETY_ON_FALSE_RETURN(efl_isa(bar, EFL_UI_LAYOUT_CLASS));
EINA_SAFETY_ON_FALSE_RETURN(efl_isa(bar, EFL_UI_LAYOUT_BASE_CLASS));
efl_content_set(efl_part(obj, "efl.bar"), bar);
pd->bar = bar;

View File

@ -1,7 +1,7 @@
/* FIXME - Text object must stop using elm_general! */
import elm_general;
class @beta Efl.Ui.Text extends Efl.Ui.Layout implements Efl.Ui.Clickable,
class @beta Efl.Ui.Text extends Efl.Ui.Layout_Base implements Efl.Ui.Clickable,
Efl.Access.Text, Efl.Access.Editable.Text, Efl.File,
Efl.Ui.Selectable, Efl.Text_Interactive
{

View File

@ -1,4 +1,4 @@
class @beta Efl.Ui.Video extends Efl.Ui.Layout implements Efl.Player, Efl.Access.Widget.Action
class @beta Efl.Ui.Video extends Efl.Ui.Layout_Base implements Efl.File, Efl.Player, Efl.Access.Widget.Action
{
[[Efl UI video class]]
legacy_prefix: elm_video;

View File

@ -236,7 +236,7 @@ _elm_widget_item_highlight_in_theme(Evas_Object *obj, Elm_Object_Item *eo_it)
{
Elm_Widget_Item_Data *it = efl_data_scope_get(eo_it, ELM_WIDGET_ITEM_CLASS);
if (efl_isa(it->view, EFL_UI_LAYOUT_CLASS))
if (efl_isa(it->view, EFL_UI_LAYOUT_BASE_CLASS))
str = edje_object_data_get(elm_layout_edje_get(it->view), "focus_highlight");
else
str = edje_object_data_get(it->view, "focus_highlight");
@ -2821,7 +2821,7 @@ elm_widget_part_text_set(Eo *obj, const char *part, const char *label)
/* legacy support: combobox was special (internal entry is text object). */
if (efl_isa(obj, ELM_COMBOBOX_CLASS))
_elm_combobox_part_text_set(obj, part, label);
else if (efl_isa(obj, EFL_UI_LAYOUT_CLASS))
else if (efl_isa(obj, EFL_UI_LAYOUT_BASE_CLASS))
elm_layout_text_set(obj, part, label);
}
@ -2831,7 +2831,7 @@ elm_widget_part_text_get(const Eo *obj, const char *part)
/* legacy support: combobox was special (internal entry is text object). */
if (efl_isa(obj, ELM_COMBOBOX_CLASS))
return _elm_combobox_part_text_get(obj, part);
else if (efl_isa(obj, EFL_UI_LAYOUT_CLASS))
else if (efl_isa(obj, EFL_UI_LAYOUT_BASE_CLASS))
return elm_layout_text_get(obj, part);
return NULL;
@ -3486,7 +3486,7 @@ elm_widget_focus_highlight_focus_part_geometry_get(const Evas_Object *obj,
if (!(target_hl_part = edje_object_data_get(edje_obj, "focus_part")))
return;
}
else if (obj && efl_isa(obj, EFL_UI_LAYOUT_CLASS))
else if (obj && efl_isa(obj, EFL_UI_LAYOUT_BASE_CLASS))
{
edje_obj = elm_layout_edje_get(obj);
if (!(target_hl_part = elm_layout_data_get(obj, "focus_part")))
@ -5671,7 +5671,7 @@ EAPI void
elm_widget_content_part_set(Evas_Object *obj, const char *part, Evas_Object *content)
{
ELM_WIDGET_CHECK(obj);
if (efl_isa(obj, EFL_UI_LAYOUT_CLASS))
if (efl_isa(obj, EFL_UI_LAYOUT_BASE_CLASS))
{
elm_layout_content_set(obj, part, content);
return;
@ -5689,7 +5689,7 @@ EAPI Evas_Object *
elm_widget_content_part_get(const Evas_Object *obj, const char *part)
{
ELM_WIDGET_CHECK(obj) NULL;
if (efl_isa(obj, EFL_UI_LAYOUT_CLASS))
if (efl_isa(obj, EFL_UI_LAYOUT_BASE_CLASS))
return elm_layout_content_get(obj, part);
if (!efl_isa(obj, EFL_PART_INTERFACE)) return NULL;
if (!part)
@ -5704,7 +5704,7 @@ EAPI Evas_Object *
elm_widget_content_part_unset(Evas_Object *obj, const char *part)
{
ELM_WIDGET_CHECK(obj) NULL;
if (efl_isa(obj, EFL_UI_LAYOUT_CLASS))
if (efl_isa(obj, EFL_UI_LAYOUT_BASE_CLASS))
return elm_layout_content_unset(obj, part);
if (!efl_isa(obj, EFL_PART_INTERFACE)) return NULL;
if (!part)
@ -5720,7 +5720,7 @@ elm_widget_signal_emit(Eo *obj, const char *emission, const char *source)
{
ELM_WIDGET_CHECK(obj);
if (efl_isa(obj, EFL_UI_LAYOUT_CLASS))
if (efl_isa(obj, EFL_UI_LAYOUT_BASE_CLASS))
elm_layout_signal_emit(obj, emission, source);
else if (evas_object_smart_type_check(obj, "elm_icon"))
{

View File

@ -3,7 +3,7 @@ import elm_general;
type Elm_Entry_Item_Provider_Cb: __undefined_type; [[Elementary entry item provider callback type]]
type Elm_Entry_Filter_Cb: __undefined_type; [[Elementary entry filter callback type]]
class Elm.Entry extends Efl.Ui.Layout implements Elm.Interface_Scrollable, Efl.Ui.Clickable,
class Elm.Entry extends Efl.Ui.Layout_Base implements Elm.Interface_Scrollable, Efl.Ui.Clickable,
Efl.Access.Text, Efl.Access.Editable.Text, Efl.File,
Efl.Ui.Selectable, Efl.Ui.Scrollable, Efl.Access.Widget.Action,
Efl.Ui.Legacy

View File

@ -456,7 +456,7 @@ _item_content_realize(Elm_Gen_Item *it,
ELM_WIDGET_DATA_GET_OR_RETURN(content, wd);
// FIXME : Layout need sizing eval before group calculate
if (efl_class_get(content) == EFL_UI_LAYOUT_CLASS)
if (efl_class_get(content) == EFL_UI_LAYOUT_BASE_CLASS)
elm_layout_sizing_eval(content);
_widget_calculate_recursive(content);

View File

@ -168,6 +168,7 @@
#include <elm_layout_common.h>
#ifdef EFL_EO_API_SUPPORT
#include <efl_ui_layout_base.eo.h>
#include <efl_ui_layout.eo.h>
#endif
#ifndef EFL_NOLEGACY_API_SUPPORT

View File

@ -1477,7 +1477,7 @@ elm_object_domain_translatable_part_text_set(Evas_Object *obj, const char *part,
{
if (!part)
part = efl_ui_widget_default_text_part_get(obj);
else if (efl_isa(obj, EFL_UI_LAYOUT_CLASS))
else if (efl_isa(obj, EFL_UI_LAYOUT_BASE_CLASS))
_elm_layout_part_aliasing_eval(obj, &part, EINA_TRUE);
elm_widget_part_translatable_text_set(obj, part, text, domain);
@ -1499,7 +1499,7 @@ elm_object_translatable_part_text_get(const Evas_Object *obj, const char *part)
{
if (!part)
part = efl_ui_widget_default_text_part_get(obj);
else if (efl_isa(obj, EFL_UI_LAYOUT_CLASS))
else if (efl_isa(obj, EFL_UI_LAYOUT_BASE_CLASS))
_elm_layout_part_aliasing_eval(obj, &part, EINA_TRUE);
return elm_widget_part_translatable_text_get(obj, part, NULL);

View File

@ -1,4 +1,4 @@
class Elm.Thumb extends Efl.Ui.Layout implements Efl.File, Efl.Ui.Clickable,
class Elm.Thumb extends Efl.Ui.Layout_Base implements Efl.File, Efl.Ui.Clickable,
Efl.Ui.Draggable, Efl.Ui.Legacy
{
[[Elementary thumbnail class]]

View File

@ -78,10 +78,10 @@ typedef struct _Elm_Layout_Smart_Data
*/
#define EFL_UI_LAYOUT_DATA_GET(o, sd) \
Efl_Ui_Layout_Data * sd = efl_data_scope_get(o, EFL_UI_LAYOUT_CLASS)
Efl_Ui_Layout_Data * sd = efl_data_scope_get(o, EFL_UI_LAYOUT_BASE_CLASS)
#define EFL_UI_LAYOUT_CHECK(obj) \
if (EINA_UNLIKELY(!efl_isa(obj, EFL_UI_LAYOUT_CLASS))) \
if (EINA_UNLIKELY(!efl_isa(obj, EFL_UI_LAYOUT_BASE_CLASS))) \
return
#endif

View File

@ -138,6 +138,7 @@ pub_eo_files = [
'efl_ui_image.eo',
'efl_ui_image_zoomable.eo',
'efl_ui_layout.eo',
'efl_ui_layout_base.eo',
'efl_ui_nstate.eo',
'efl_ui_navigation_bar.eo',
'efl_ui_navigation_bar_part.eo',