diff --git a/src/Makefile_Edje.am b/src/Makefile_Edje.am index 45934d6467..8dc400cb2f 100644 --- a/src/Makefile_Edje.am +++ b/src/Makefile_Edje.am @@ -9,8 +9,10 @@ edje_eolian_type_files = \ lib/edje/edje_types.eot edje_eolian_priv_files = \ + lib/edje/efl_canvas_layout_internal.eo \ lib/edje/efl_canvas_layout_internal_box.eo \ - lib/edje/efl_canvas_layout_internal_table.eo + lib/edje/efl_canvas_layout_internal_table.eo \ + lib/edje/efl_canvas_layout_internal_swallow.eo edje_eolian_c = $(edje_eolian_files:%.eo=%.eo.c) edje_eolian_h = $(edje_eolian_files:%.eo=%.eo.h) \ diff --git a/src/Makefile_Elementary.am b/src/Makefile_Elementary.am index c5f8e6fa5a..550a54a36a 100644 --- a/src/Makefile_Elementary.am +++ b/src/Makefile_Elementary.am @@ -119,6 +119,22 @@ elm_public_eolian_files = \ lib/elementary/efl_ui_grid.eo \ lib/elementary/efl_ui_layout_internal_box.eo \ lib/elementary/efl_ui_layout_internal_table.eo \ + lib/elementary/elm_button_internal_part.eo \ + lib/elementary/elm_ctxpopup_internal_part.eo \ + lib/elementary/elm_dayselector_internal_part.eo \ + lib/elementary/elm_entry_internal_part.eo \ + lib/elementary/elm_fileselector_entry_internal_part.eo \ + lib/elementary/elm_flip_internal_part.eo \ + lib/elementary/elm_hover_internal_part.eo \ + lib/elementary/elm_layout_internal_part.eo \ + lib/elementary/elm_mapbuf_internal_part.eo \ + lib/elementary/elm_naviframe_internal_part.eo \ + lib/elementary/elm_notify_internal_part.eo \ + lib/elementary/elm_panel_internal_part.eo \ + lib/elementary/elm_player_internal_part.eo \ + lib/elementary/elm_progressbar_internal_part.eo \ + lib/elementary/elm_popup_internal_part.eo \ + lib/elementary/elm_scroller_internal_part.eo \ $(NULL) # Legacy classes - not part of public EO API @@ -508,6 +524,7 @@ includesub_HEADERS = \ lib/elementary/elm_win_standard.h \ lib/elementary/elm_helper.h \ lib/elementary/efl_ui_box_private.h \ + lib/elementary/elm_part_helper.h \ $(NULL) includesubdir = $(includedir)/elementary-@VMAJ@/ diff --git a/src/lib/edje/edje_containers.c b/src/lib/edje/edje_containers.c index 037af612b2..d0f4f0a6cf 100644 --- a/src/lib/edje/edje_containers.c +++ b/src/lib/edje/edje_containers.c @@ -1,19 +1,25 @@ #include "edje_private.h" +#define EFL_CANVAS_LAYOUT_INTERNAL_PROTECTED #define EFL_CANVAS_LAYOUT_INTERNAL_BOX_PROTECTED #define EFL_CANVAS_LAYOUT_INTERNAL_TABLE_PROTECTED +#define EFL_CANVAS_LAYOUT_INTERNAL_SWALLOW_PROTECTED +#include "efl_canvas_layout_internal.eo.h" #include "efl_canvas_layout_internal_box.eo.h" #include "efl_canvas_layout_internal_table.eo.h" +#include "efl_canvas_layout_internal_swallow.eo.h" #include "../evas/canvas/evas_box.eo.h" #include "../evas/canvas/evas_table.eo.h" -#define BOX_CLASS EFL_CANVAS_LAYOUT_INTERNAL_BOX_CLASS -#define TABLE_CLASS EFL_CANVAS_LAYOUT_INTERNAL_TABLE_CLASS +#define BOX_CLASS EFL_CANVAS_LAYOUT_INTERNAL_BOX_CLASS +#define TABLE_CLASS EFL_CANVAS_LAYOUT_INTERNAL_TABLE_CLASS +#define SWALLOW_CLASS EFL_CANVAS_LAYOUT_INTERNAL_SWALLOW_CLASS typedef struct _Edje_Part_Data Edje_Box_Data; typedef struct _Edje_Part_Data Edje_Table_Data; +typedef struct _Edje_Part_Data Edje_Swallow_Data; typedef struct _Part_Item_Iterator Part_Item_Iterator; struct _Edje_Part_Data @@ -38,92 +44,109 @@ struct _Part_Item_Iterator #define RETURN_VOID do { PROXY_UNREF(obj, pd); return; } while(0) #define PROXY_CALL(a) ({ PROXY_REF(obj, pd); a; }) +/* ugly macros to avoid code duplication */ + +#define PROXY_RESET(type) \ + do { if (_ ## type ## _proxy) \ + { \ + eo_del_intercept_set(_ ## type ## _proxy, NULL); \ + eo_unref(_ ## type ## _proxy); \ + _ ## type ## _proxy = NULL; \ + } } while (0) + +#define PROXY_DEL_CB(type) \ +static void \ +type ## _del_cb(Eo *proxy) \ +{ \ + if (_ ## type ## _proxy) \ + { \ + eo_del_intercept_set(proxy, NULL); \ + eo_unref(proxy); \ + return; \ + } \ + if (eo_parent_get(proxy)) \ + { \ + eo_ref(proxy); \ + eo_parent_set(proxy, NULL); \ + } \ + _ ## type ## _proxy = proxy; \ +} + +#define PROXY_IMPLEMENTATION(type, TYPE, datatype) \ +Eo * \ +_edje_ ## type ## _internal_proxy_get(Edje_Object *obj EINA_UNUSED, Edje *ed, Edje_Real_Part *rp) \ +{ \ + Edje_Box_Data *pd; \ + Eo *proxy; \ + \ + pd = eo_data_scope_get(_ ## type ## _proxy, TYPE ## _CLASS); \ + if (!pd) \ + { \ + if (_ ## type ## _proxy) \ + { \ + ERR("Found invalid handle for efl_part. Reset."); \ + _ ## type ## _proxy = NULL; \ + } \ + return eo_add(TYPE ## _CLASS, ed->obj, \ + _edje_real_part_set(eo_self, ed, rp, rp->part->name)); \ + } \ + \ + if (EINA_UNLIKELY(pd->temp)) \ + { \ + /* warn about misuse, since non-implemented functions may trigger this \ + * misuse by accident. */ \ + ERR("Misuse of efl_part detected. Handles returned by efl_part() are " \ + "valid for a single function call! Did you call a non implemented " \ + "function?"); \ + } \ + proxy = _ ## type ## _proxy; \ + _ ## type ## _proxy = NULL; \ + _edje_real_part_set(proxy, ed, rp, rp->part->name); \ + return proxy; \ +} \ +\ +EOLIAN static void \ +_efl_canvas_layout_internal_ ## type ## _efl_canvas_layout_internal_real_part_set(Eo *obj, datatype *pd, void *ed, void *rp, const char *part) \ +{ \ + pd->ed = ed; \ + pd->rp = rp; \ + pd->part = part; \ + pd->temp = 1; \ + eo_del_intercept_set(obj, type ## _del_cb); \ + eo_parent_set(obj, pd->ed->obj); \ +} \ +\ +EOLIAN static Eo_Base * \ +_efl_canvas_layout_internal_ ## type ## _eo_base_finalize(Eo *obj, datatype *pd) \ +{ \ + EINA_SAFETY_ON_FALSE_RETURN_VAL(pd->rp && pd->ed && pd->part, NULL); \ + return eo_finalize(eo_super(obj, TYPE ## _CLASS)); \ +} + static Eo *_box_proxy = NULL; static Eo *_table_proxy = NULL; +static Eo *_swallow_proxy = NULL; void _edje_internal_proxy_shutdown(void) { - if (_box_proxy) - { - eo_del_intercept_set(_box_proxy, NULL); - eo_unref(_box_proxy); - _box_proxy = NULL; - } - if (_table_proxy) - { - eo_del_intercept_set(_table_proxy, NULL); - eo_unref(_table_proxy); - _table_proxy = NULL; - } + PROXY_RESET(box); + PROXY_RESET(table); + PROXY_RESET(swallow); } -static void -_box_del_cb(Eo *proxy) -{ - if (_box_proxy) - { - eo_del_intercept_set(proxy, NULL); - eo_unref(proxy); - return; - } - if (eo_parent_get(proxy)) - { - eo_ref(proxy); - eo_parent_set(proxy, NULL); - } - _box_proxy = proxy; -} +PROXY_DEL_CB(box) +PROXY_DEL_CB(table) +PROXY_DEL_CB(swallow) -Eo * -_edje_box_internal_proxy_get(Edje_Object *obj EINA_UNUSED, Edje *ed, Edje_Real_Part *rp) -{ - Edje_Box_Data *pd; - Eo *proxy; +PROXY_IMPLEMENTATION(box, BOX, Edje_Box_Data) +PROXY_IMPLEMENTATION(table, TABLE, Edje_Table_Data) +PROXY_IMPLEMENTATION(swallow, SWALLOW, Edje_Swallow_Data) - pd = eo_data_scope_get(_box_proxy, BOX_CLASS); - if (!pd) - { - if (_box_proxy) - { - ERR("Found invalid handle for efl_part. Reset."); - _box_proxy = NULL; - } - return eo_add - (BOX_CLASS, ed->obj, - efl_canvas_layout_internal_box_real_part_set(eo_self, ed, rp, rp->part->name)); - } - if (EINA_UNLIKELY(pd->temp)) - { - /* warn about misuse, since non-implemented functions may trigger this - * misuse by accident. */ - ERR("Misuse of efl_part detected. Handles returned by efl_part() are " - "valid for a single function call! Did you call a non implemented " - "function?"); - } - proxy = _box_proxy; - _box_proxy = NULL; - efl_canvas_layout_internal_box_real_part_set(proxy, ed, rp, rp->part->name); - return proxy; -} +#undef PROXY_RESET +#undef PROXY_DEL_CB +#undef PROXY_IMPLEMENTATION -EOLIAN static void -_efl_canvas_layout_internal_box_real_part_set(Eo *obj, Edje_Box_Data *pd, void *ed, void *rp, const char *part) -{ - pd->ed = ed; - pd->rp = rp; - pd->part = part; - pd->temp = 1; - eo_del_intercept_set(obj, _box_del_cb); - eo_parent_set(obj, pd->ed->obj); -} - -EOLIAN static Eo_Base * -_efl_canvas_layout_internal_box_eo_base_finalize(Eo *obj, Edje_Box_Data *pd) -{ - EINA_SAFETY_ON_FALSE_RETURN_VAL(pd->rp && pd->ed && pd->part, NULL); - return eo_finalize(eo_super(obj, BOX_CLASS)); -} /* Legacy features */ @@ -313,76 +336,6 @@ _efl_canvas_layout_internal_box_efl_pack_linear_pack_direction_get(Eo *obj, Edje RETURN_VAL(EFL_ORIENT_NONE); } -/* Table */ - -static void -_table_del_cb(Eo *proxy) -{ - if (_table_proxy) - { - eo_del_intercept_set(proxy, NULL); - eo_unref(proxy); - return; - } - if (eo_parent_get(proxy)) - { - eo_ref(proxy); - eo_parent_set(proxy, NULL); - } - _table_proxy = proxy; -} - -Eo * -_edje_table_internal_proxy_get(Edje_Object *obj EINA_UNUSED, Edje *ed, Edje_Real_Part *rp) -{ - Edje_Box_Data *pd; - Eo *proxy; - - pd = eo_data_scope_get(_table_proxy, TABLE_CLASS); - if (!pd) - { - if (_table_proxy) - { - ERR("Found invalid handle for efl_part. Reset."); - _table_proxy = NULL; - } - return eo_add - (TABLE_CLASS, ed->obj, - efl_canvas_layout_internal_table_real_part_set(eo_self, ed, rp, rp->part->name)); - } - - if (EINA_UNLIKELY(pd->temp)) - { - /* warn about misuse, since non-implemented functions may trigger this - * misuse by accident. */ - ERR("Misuse of efl_part detected. Handles returned by efl_part() are " - "valid for a single function call! Did you call a non implemented " - "function?"); - } - proxy = _table_proxy; - _table_proxy = NULL; - efl_canvas_layout_internal_table_real_part_set(proxy, ed, rp, rp->part->name); - return proxy; -} - -EOLIAN static void -_efl_canvas_layout_internal_table_real_part_set(Eo *obj EINA_UNUSED, Edje_Table_Data *pd, void *ed, void *rp, const char *part) -{ - pd->ed = ed; - pd->rp = rp; - pd->part = part; - pd->temp = 1; - eo_del_intercept_set(obj, _table_del_cb); - eo_parent_set(obj, pd->ed->obj); -} - -EOLIAN static Eo_Base * -_efl_canvas_layout_internal_table_eo_base_finalize(Eo *obj, Edje_Table_Data *pd) -{ - EINA_SAFETY_ON_FALSE_RETURN_VAL(pd->rp && pd->ed && pd->part, NULL); - return eo_finalize(eo_super(obj, TABLE_CLASS)); -} - EOLIAN static Eina_Iterator * _efl_canvas_layout_internal_table_efl_container_content_iterate(Eo *obj, Edje_Table_Data *pd) { @@ -546,6 +499,29 @@ _efl_canvas_layout_internal_table_efl_pack_grid_grid_position_get(Eo *obj, Edje_ RETURN_VAL(ret); } +/* Swallow parts */ +EOLIAN static Efl_Gfx * +_efl_canvas_layout_internal_swallow_efl_container_content_get(Eo *obj, Edje_Swallow_Data *pd) +{ + RETURN_VAL(_edje_efl_container_content_get(pd->ed, pd->part)); +} + +EOLIAN static Eina_Bool +_efl_canvas_layout_internal_swallow_efl_container_content_set(Eo *obj, Edje_Swallow_Data *pd, Efl_Gfx *content) +{ + RETURN_VAL(_edje_efl_container_content_set(pd->ed, pd->part, content)); +} + +EOLIAN static Efl_Gfx * +_efl_canvas_layout_internal_swallow_efl_container_content_unset(Eo *obj, Edje_Swallow_Data *pd) +{ + Efl_Gfx *content = _edje_efl_container_content_get(pd->ed, pd->part); + if (!content) RETURN_VAL(NULL); + PROXY_CALL(efl_content_remove(obj, content)); + RETURN_VAL(content); +} + + /* Legacy API implementation */ #ifdef DEGUG @@ -681,5 +657,7 @@ edje_object_part_table_clear(Edje_Object *obj, const char *part, Eina_Bool clear return efl_pack_unpack_all(table); } +#include "efl_canvas_layout_internal.eo.c" #include "efl_canvas_layout_internal_box.eo.c" #include "efl_canvas_layout_internal_table.eo.c" +#include "efl_canvas_layout_internal_swallow.eo.c" diff --git a/src/lib/edje/edje_object.eo b/src/lib/edje/edje_object.eo index d79cd9338a..dedd11f64d 100644 --- a/src/lib/edje/edje_object.eo +++ b/src/lib/edje/edje_object.eo @@ -2000,9 +2000,6 @@ class Edje.Object (Evas.Smart.Clipped, Efl.File, Efl.Container, Efl.Part) Efl.File.file.get; Efl.File.mmap.set; Efl.File.mmap.get; - Efl.Container.content.set; - Efl.Container.content.get; - Efl.Container.content_unset; Efl.Container.content_remove; Efl.Container.content_part_name.get; Efl.Part.part; diff --git a/src/lib/edje/edje_private.h b/src/lib/edje/edje_private.h index d307ea6974..05b0b6480d 100644 --- a/src/lib/edje/edje_private.h +++ b/src/lib/edje/edje_private.h @@ -2959,6 +2959,11 @@ Eina_Bool _edje_part_table_unpack(Edje *ed, const char *part, Evas_Object *child Eina_Bool _edje_part_table_col_row_size_get(Edje *ed, const char *part, int *cols, int *rows); Eina_Bool _edje_part_table_clear(Edje *ed, const char *part, Eina_Bool clear); +/* part containers: swallow */ +Eo *_edje_swallow_internal_proxy_get(Edje_Object *obj, Edje *ed, Edje_Real_Part *rp); +Efl_Gfx *_edje_efl_container_content_get(Edje *ed, const char *part); +Eina_Bool _edje_efl_container_content_set(Edje *ed, const char *part, Efl_Gfx *obj_swallow); + void _edje_internal_proxy_shutdown(void); #ifdef HAVE_LIBREMIX diff --git a/src/lib/edje/edje_util.c b/src/lib/edje/edje_util.c index a01eda4112..ad87ef7da4 100644 --- a/src/lib/edje/edje_util.c +++ b/src/lib/edje/edje_util.c @@ -3511,9 +3511,8 @@ _edje_object_text_markup_filter_callback_del_full(Eo *obj EINA_UNUSED, Edje *ed, return NULL; } -EOLIAN Eina_Bool -_edje_object_efl_container_content_set(Eo *obj EINA_UNUSED, Edje *ed, - const char *part, Efl_Gfx *obj_swallow) +Eina_Bool +_edje_efl_container_content_set(Edje *ed, const char *part, Efl_Gfx *obj_swallow) { Edje_Real_Part *rp, *rpcur; Edje_User_Defined *eud = NULL; @@ -3872,8 +3871,8 @@ _edje_object_efl_container_content_remove(Eo *obj EINA_UNUSED, Edje *ed, Evas_Ob return EINA_TRUE; } -EOLIAN Efl_Gfx * -_edje_object_efl_container_content_get(Eo *obj EINA_UNUSED, Edje *ed, const char *part) +Efl_Gfx * +_edje_efl_container_content_get(Edje *ed, const char *part) { Edje_Real_Part *rp; @@ -3896,21 +3895,6 @@ _edje_object_efl_container_content_get(Eo *obj EINA_UNUSED, Edje *ed, const char return rp->typedata.swallow->swallowed_object; } -/* new in eo */ -EOLIAN Efl_Gfx * -_edje_object_efl_container_content_unset(Eo *obj, Edje *ed EINA_UNUSED, const char *part) -{ - Efl_Gfx *content; - - content = efl_content_get(obj, part); - if (!content) return NULL; - - if (efl_content_remove(obj, content)) - return content; - - return NULL; -} - /* new in eo */ EOLIAN const char * _edje_object_efl_container_content_part_name_get(Eo *obj EINA_UNUSED, Edje *ed EINA_UNUSED, Efl_Gfx *content) @@ -3940,6 +3924,8 @@ _edje_object_efl_part_part(Eo *obj, Edje *ed, const char *part) return _edje_box_internal_proxy_get(obj, ed, rp); else if (rp->part->type == EDJE_PART_TYPE_TABLE) return _edje_table_internal_proxy_get(obj, ed, rp); + else if (rp->part->type == EDJE_PART_TYPE_SWALLOW) + return _edje_swallow_internal_proxy_get(obj, ed, rp); else return NULL; /* FIXME/TODO: text & others (color, ...) */ } @@ -6822,7 +6808,7 @@ _edje_part_mask_flags_set(Edje *ed EINA_UNUSED, Edje_Real_Part *rp, Evas_Event_F EAPI Eina_Bool edje_object_part_swallow(Edje_Object *obj, const char *part, Evas_Object *obj_swallow) { - return efl_content_set(obj, part, obj_swallow); + return efl_content_set(efl_part(obj, part), obj_swallow); } EAPI void @@ -6834,7 +6820,7 @@ edje_object_part_unswallow(Edje_Object *obj, Evas_Object *obj_swallow) EAPI Evas_Object * edje_object_part_swallow_get(const Edje_Object *obj, const char *part) { - return efl_content_get(obj, part); + return efl_content_get(efl_part(obj, part)); } /* vim:set ts=8 sw=3 sts=3 expandtab cino=>5n-2f0^-2{2(0W1st0 :*/ diff --git a/src/lib/edje/efl_canvas_layout_internal.eo b/src/lib/edje/efl_canvas_layout_internal.eo new file mode 100644 index 0000000000..38ff692a95 --- /dev/null +++ b/src/lib/edje/efl_canvas_layout_internal.eo @@ -0,0 +1,15 @@ +interface Efl.Canvas.Layout_Internal () +{ + [[Internal APIs used by Edje part objects.]] + eo_prefix: _edje; + methods { + @property real_part @protected { + set {} + values { + ed: void*; + rp: void*; + part: const(char)*; + } + } + } +} diff --git a/src/lib/edje/efl_canvas_layout_internal_box.eo b/src/lib/edje/efl_canvas_layout_internal_box.eo index 48284b901a..a84499d26a 100644 --- a/src/lib/edje/efl_canvas_layout_internal_box.eo +++ b/src/lib/edje/efl_canvas_layout_internal_box.eo @@ -1,23 +1,14 @@ -class Efl.Canvas.Layout_Internal.Box (Eo.Base, Efl.Pack.Linear) +class Efl.Canvas.Layout_Internal.Box (Eo.Base, Efl.Canvas.Layout_Internal, Efl.Pack.Linear) { [[Represents a Box created as part of a layout. - Can not be deleted, this is only a representation of an internal object - of an EFL layout. + Its lifetime is limited to one function call only, unless an extra + reference is explicitely held. ]] data: Edje_Box_Data; - methods { - @property real_part @protected { - set {} - values { - ed: void*; - rp: void*; - part: const(char)*; - } - } - } implements { Eo.Base.finalize; + Efl.Canvas.Layout_Internal.real_part.set; Efl.Container.content_iterate; Efl.Container.content_count; Efl.Container.content_remove; diff --git a/src/lib/edje/efl_canvas_layout_internal_swallow.eo b/src/lib/edje/efl_canvas_layout_internal_swallow.eo new file mode 100644 index 0000000000..dbfc694c6a --- /dev/null +++ b/src/lib/edje/efl_canvas_layout_internal_swallow.eo @@ -0,0 +1,16 @@ +class Efl.Canvas.Layout_Internal.Swallow (Eo.Base, Efl.Canvas.Layout_Internal, Efl.Container) +{ + [[Represents a SWALLOW part of an Edje object. + + Its lifetime is limited to one function call only, unless an extra + reference is explicitely held. + ]] + data: Edje_Swallow_Data; + implements { + Eo.Base.finalize; + Efl.Canvas.Layout_Internal.real_part.set; + Efl.Container.content.get; + Efl.Container.content.set; + Efl.Container.content_unset; + } +} diff --git a/src/lib/edje/efl_canvas_layout_internal_table.eo b/src/lib/edje/efl_canvas_layout_internal_table.eo index ddebbc9ce6..b52a244c42 100644 --- a/src/lib/edje/efl_canvas_layout_internal_table.eo +++ b/src/lib/edje/efl_canvas_layout_internal_table.eo @@ -1,4 +1,4 @@ -class Efl.Canvas.Layout_Internal.Table (Eo.Base, Efl.Pack.Grid) +class Efl.Canvas.Layout_Internal.Table (Eo.Base, Efl.Canvas.Layout_Internal, Efl.Pack.Grid) { [[Represents a Table created as part of a layout. @@ -6,18 +6,9 @@ class Efl.Canvas.Layout_Internal.Table (Eo.Base, Efl.Pack.Grid) of an EFL layout. ]] data: Edje_Table_Data; - methods { - @property real_part @protected { - set {} - values { - ed: void*; - rp: void*; - part: const(char)*; - } - } - } implements { Eo.Base.finalize; + Efl.Canvas.Layout_Internal.real_part.set; Efl.Container.content_iterate; Efl.Container.content_count; Efl.Container.content_remove; diff --git a/src/lib/efl/interfaces/efl_container.eo b/src/lib/efl/interfaces/efl_container.eo index a64c8f8500..f66c128102 100644 --- a/src/lib/efl/interfaces/efl_container.eo +++ b/src/lib/efl/interfaces/efl_container.eo @@ -4,19 +4,6 @@ interface Efl.Container (Efl.Gfx) eo_prefix: efl_content; event_prefix: efl_container; methods { - @property content { - [[Swallowed sub-object contained in this object.]] - set { - return: bool; - } - get {} - keys { - part: const(char)*; [[the part in which to swallow the object]] - } - values { - content: Efl.Gfx; [[the object to swallow.]] - } - } @property content_part_name { [[The name of the part under which an object is swallowed.]] get {} @@ -27,11 +14,18 @@ interface Efl.Container (Efl.Gfx) name: const(char)*; } } - content_unset { - [[Unswallow the object in the given part of the container and return it.]] - params { - @in name: const(char)* @nullable; + @property content { + [[Swallowed sub-object contained in this object.]] + set { + return: bool; } + get {} + values { + content: Efl.Gfx; [[the object to swallow.]] + } + } + content_unset { + [[Unswallow the object in the current container and return it.]] return: Efl.Gfx; } content_remove { diff --git a/src/lib/elementary/elc_ctxpopup.c b/src/lib/elementary/elc_ctxpopup.c index 4e227c81a7..4e070fd481 100644 --- a/src/lib/elementary/elc_ctxpopup.c +++ b/src/lib/elementary/elc_ctxpopup.c @@ -13,6 +13,9 @@ #include "elm_priv.h" #include "elm_widget_ctxpopup.h" +#include "elm_ctxpopup_internal_part.eo.h" +#include "elm_part_helper.h" + #define MY_CLASS ELM_CTXPOPUP_CLASS #define MY_CLASS_NAME "Elm_Ctxpopup" @@ -772,15 +775,12 @@ _elm_ctxpopup_elm_widget_theme_apply(Eo *obj, Elm_Ctxpopup_Data *sd) /* kind of a big and tricky override here: an internal box will hold * the actual content. content aliases won't be of much help here */ -EOLIAN static Eina_Bool -_elm_ctxpopup_efl_container_content_set(Eo *obj, Elm_Ctxpopup_Data *sd, const char *part, Evas_Object *content) +static Eina_Bool +_elm_ctxpopup_content_set(Eo *obj, Elm_Ctxpopup_Data *sd, const char *part, Evas_Object *content) { - Eina_Bool int_ret = EINA_TRUE; - if ((part) && (strcmp(part, "default"))) { - int_ret = efl_content_set(eo_super(obj, MY_CLASS), part, content); - return int_ret; + return efl_content_set(efl_part(eo_super(obj, MY_CLASS), part), content); } if (!content) return EINA_FALSE; @@ -806,30 +806,22 @@ _elm_ctxpopup_efl_container_content_set(Eo *obj, Elm_Ctxpopup_Data *sd, const ch return EINA_TRUE; } -EOLIAN static Evas_Object* -_elm_ctxpopup_efl_container_content_get(Eo *obj, Elm_Ctxpopup_Data *sd, const char *part) +static Evas_Object* +_elm_ctxpopup_content_get(Eo *obj, Elm_Ctxpopup_Data *sd, const char *part) { - if ((part) && (strcmp(part, "default"))) - { - Evas_Object *ret = NULL; - ret = efl_content_get(eo_super(obj, MY_CLASS), part); - return ret; - } + return efl_content_get(efl_part(eo_super(obj, MY_CLASS), part)); return sd->content; } -EOLIAN static Evas_Object* -_elm_ctxpopup_efl_container_content_unset(Eo *obj, Elm_Ctxpopup_Data *sd, const char *part) +static Evas_Object* +_elm_ctxpopup_content_unset(Eo *obj, Elm_Ctxpopup_Data *sd, const char *part) { Evas_Object *content = NULL; if ((part) && (strcmp(part, "default"))) - { - content = efl_content_unset(eo_super(obj, MY_CLASS), part); - return content; - } + return efl_content_unset(efl_part(eo_super(obj, MY_CLASS), part)); content = sd->content; if (!content) return content; @@ -1131,7 +1123,7 @@ _elm_ctxpopup_evas_object_smart_add(Eo *obj, Elm_Ctxpopup_Data *priv) (priv->box, EVAS_CALLBACK_RESIZE, _on_content_resized, obj); /* box will be our content placeholder, thus the parent's version call */ - efl_content_set(eo_super(obj, MY_CLASS), "elm.swallow.content", priv->box); + efl_content_set(efl_part(eo_super(obj, MY_CLASS), "elm.swallow.content"), priv->box); evas_object_event_callback_add(obj, EVAS_CALLBACK_SHOW, _on_show, NULL); evas_object_event_callback_add(obj, EVAS_CALLBACK_HIDE, _on_hide, NULL); @@ -1482,5 +1474,15 @@ _elm_ctxpopup_elm_interface_atspi_accessible_state_set_get(Eo *obj, Elm_Ctxpopup return ret; } +/* Efl.Part begin */ + +ELM_PART_OVERRIDE(elm_ctxpopup, ELM_CTXPOPUP, ELM_LAYOUT, Elm_Ctxpopup_Data, Elm_Part_Data) +ELM_PART_OVERRIDE_CONTENT_SET(elm_ctxpopup, ELM_CTXPOPUP, ELM_LAYOUT, Elm_Ctxpopup_Data, Elm_Part_Data) +ELM_PART_OVERRIDE_CONTENT_GET(elm_ctxpopup, ELM_CTXPOPUP, ELM_LAYOUT, Elm_Ctxpopup_Data, Elm_Part_Data) +ELM_PART_OVERRIDE_CONTENT_UNSET(elm_ctxpopup, ELM_CTXPOPUP, ELM_LAYOUT, Elm_Ctxpopup_Data, Elm_Part_Data) +#include "elm_ctxpopup_internal_part.eo.c" + +/* Efl.Part end */ + #include "elm_ctxpopup_item.eo.c" #include "elm_ctxpopup.eo.c" diff --git a/src/lib/elementary/elc_fileselector_entry.c b/src/lib/elementary/elc_fileselector_entry.c index f4ad6d7dc8..1941eb88ac 100644 --- a/src/lib/elementary/elc_fileselector_entry.c +++ b/src/lib/elementary/elc_fileselector_entry.c @@ -10,6 +10,9 @@ #include "elm_interface_fileselector.h" #include "elm_widget_fileselector_entry.h" +#include "elm_fileselector_entry_internal_part.eo.h" +#include "elm_part_helper.h" + #define MY_CLASS ELM_FILESELECTOR_ENTRY_CLASS #define MY_CLASS_NAME "Elm_Fileselector_Entry" @@ -230,12 +233,12 @@ _elm_fileselector_entry_elm_layout_text_get(Eo *obj, Elm_Fileselector_Entry_Data return elm_object_text_get(sd->button); } -EOLIAN static Eina_Bool -_elm_fileselector_entry_efl_container_content_set(Eo *obj, Elm_Fileselector_Entry_Data *sd, const char *part, Evas_Object *content) +static Eina_Bool +_elm_fileselector_entry_content_set(Eo *obj, Elm_Fileselector_Entry_Data *sd, const char *part, Evas_Object *content) { if (part && strcmp(part, "button icon")) { - return efl_content_set(eo_super(obj, MY_CLASS), part, content); + return efl_content_set(efl_part(eo_super(obj, MY_CLASS), part), content); } elm_layout_content_set(sd->button, NULL, content); @@ -243,23 +246,23 @@ _elm_fileselector_entry_efl_container_content_set(Eo *obj, Elm_Fileselector_Entr return EINA_TRUE; } -EOLIAN static Evas_Object * -_elm_fileselector_entry_efl_container_content_get(Eo *obj, Elm_Fileselector_Entry_Data *sd, const char *part) +static Evas_Object * +_elm_fileselector_entry_content_get(Eo *obj, Elm_Fileselector_Entry_Data *sd, const char *part) { if (part && strcmp(part, "button icon")) { - return efl_content_get(eo_super(obj, MY_CLASS), part); + return efl_content_get(efl_part(eo_super(obj, MY_CLASS), part)); } return elm_layout_content_get(sd->button, NULL); } -EOLIAN static Evas_Object * -_elm_fileselector_entry_efl_container_content_unset(Eo *obj, Elm_Fileselector_Entry_Data *sd, const char *part) +static Evas_Object * +_elm_fileselector_entry_content_unset(Eo *obj, Elm_Fileselector_Entry_Data *sd, const char *part) { if (part && strcmp(part, "button icon")) { - return efl_content_unset(eo_super(obj, MY_CLASS), part); + return efl_content_unset(efl_part(eo_super(obj, MY_CLASS), part)); } return elm_layout_content_unset(sd->button, NULL); @@ -550,4 +553,14 @@ _elm_fileselector_entry_class_constructor(Eo_Class *klass) evas_smart_legacy_type_register(MY_CLASS_NAME_LEGACY, klass); } +/* Efl.Part begin */ + +ELM_PART_OVERRIDE(elm_fileselector_entry, ELM_FILESELECTOR_ENTRY, ELM_LAYOUT, Elm_Fileselector_Entry_Data, Elm_Part_Data) +ELM_PART_OVERRIDE_CONTENT_SET(elm_fileselector_entry, ELM_FILESELECTOR_ENTRY, ELM_LAYOUT, Elm_Fileselector_Entry_Data, Elm_Part_Data) +ELM_PART_OVERRIDE_CONTENT_GET(elm_fileselector_entry, ELM_FILESELECTOR_ENTRY, ELM_LAYOUT, Elm_Fileselector_Entry_Data, Elm_Part_Data) +ELM_PART_OVERRIDE_CONTENT_UNSET(elm_fileselector_entry, ELM_FILESELECTOR_ENTRY, ELM_LAYOUT, Elm_Fileselector_Entry_Data, Elm_Part_Data) +#include "elm_fileselector_entry_internal_part.eo.c" + +/* Efl.Part end */ + #include "elm_fileselector_entry.eo.c" diff --git a/src/lib/elementary/elc_naviframe.c b/src/lib/elementary/elc_naviframe.c index c5865dc228..0728eceeaa 100644 --- a/src/lib/elementary/elc_naviframe.c +++ b/src/lib/elementary/elc_naviframe.c @@ -11,6 +11,9 @@ #include "elm_widget_naviframe.h" #include "elm_widget_container.h" +#include "elm_naviframe_internal_part.eo.h" +#include "elm_part_helper.h" + #define MY_CLASS ELM_NAVIFRAME_CLASS #define MY_CLASS_NAME "Elm_Naviframe" @@ -1043,8 +1046,8 @@ _elm_naviframe_elm_layout_text_get(Eo *obj, Elm_Naviframe_Data *sd EINA_UNUSED, /* we have to keep a "manual" set here because of the callbacks on the * children */ -EOLIAN static Eina_Bool -_elm_naviframe_efl_container_content_set(Eo *obj, Elm_Naviframe_Data *sd EINA_UNUSED, const char *part, Evas_Object *content) +static Eina_Bool +_elm_naviframe_content_set(Eo *obj, Elm_Naviframe_Data *sd EINA_UNUSED, const char *part, Evas_Object *content) { Elm_Object_Item *it; @@ -1059,8 +1062,8 @@ _elm_naviframe_efl_container_content_set(Eo *obj, Elm_Naviframe_Data *sd EINA_UN return EINA_FALSE; } -EOLIAN static Evas_Object* -_elm_naviframe_efl_container_content_get(Eo *obj, Elm_Naviframe_Data *sd EINA_UNUSED, const char *part) +static Evas_Object* +_elm_naviframe_content_get(Eo *obj, Elm_Naviframe_Data *sd EINA_UNUSED, const char *part) { Elm_Object_Item *it = elm_naviframe_top_item_get(obj); @@ -1069,8 +1072,8 @@ _elm_naviframe_efl_container_content_get(Eo *obj, Elm_Naviframe_Data *sd EINA_UN return elm_object_item_part_content_get(it, part); } -EOLIAN static Evas_Object* -_elm_naviframe_efl_container_content_unset(Eo *obj, Elm_Naviframe_Data *sd EINA_UNUSED, const char *part) +static Evas_Object* +_elm_naviframe_content_unset(Eo *obj, Elm_Naviframe_Data *sd EINA_UNUSED, const char *part) { Elm_Object_Item *it = elm_naviframe_top_item_get(obj); @@ -2003,5 +2006,15 @@ _elm_naviframe_elm_interface_atspi_widget_action_elm_actions_get(Eo *obj EINA_UN return &atspi_actions[0]; } +/* Efl.Part begin */ + +ELM_PART_OVERRIDE(elm_naviframe, ELM_NAVIFRAME, ELM_LAYOUT, Elm_Naviframe_Data, Elm_Part_Data) +ELM_PART_OVERRIDE_CONTENT_SET(elm_naviframe, ELM_NAVIFRAME, ELM_LAYOUT, Elm_Naviframe_Data, Elm_Part_Data) +ELM_PART_OVERRIDE_CONTENT_GET(elm_naviframe, ELM_NAVIFRAME, ELM_LAYOUT, Elm_Naviframe_Data, Elm_Part_Data) +ELM_PART_OVERRIDE_CONTENT_UNSET(elm_naviframe, ELM_NAVIFRAME, ELM_LAYOUT, Elm_Naviframe_Data, Elm_Part_Data) +#include "elm_naviframe_internal_part.eo.c" + +/* Efl.Part end */ + #include "elm_naviframe_item.eo.c" #include "elm_naviframe.eo.c" diff --git a/src/lib/elementary/elc_player.c b/src/lib/elementary/elc_player.c index 5c2cf73a99..16e3dfc2bc 100644 --- a/src/lib/elementary/elc_player.c +++ b/src/lib/elementary/elc_player.c @@ -12,6 +12,9 @@ #include "elm_widget_layout.h" #include "elm_widget_player.h" +#include "elm_player_internal_part.eo.h" +#include "elm_part_helper.h" + #define MY_CLASS ELM_PLAYER_CLASS #define MY_CLASS_NAME "Elm_Player" @@ -576,8 +579,8 @@ _str_free(char *data) * treating this special case here and delegating other objects to own * layout */ -EOLIAN static Eina_Bool -_elm_player_efl_container_content_set(Eo *obj, Elm_Player_Data *sd, const char *part, Evas_Object *content) +static Eina_Bool +_elm_player_content_set(Eo *obj, Elm_Player_Data *sd, const char *part, Evas_Object *content) { Eina_Bool int_ret = EINA_FALSE; double pos, length; @@ -585,11 +588,11 @@ _elm_player_efl_container_content_set(Eo *obj, Elm_Player_Data *sd, const char * if (part && strcmp(part, "video")) { - int_ret = efl_content_set(eo_super(obj, MY_CLASS), part, content); + int_ret = efl_content_set(efl_part(eo_super(obj, MY_CLASS), part), content); return int_ret; } if ((!part) || (!strcmp(part, "video"))) part = "elm.swallow.content"; - int_ret = efl_content_set(eo_super(obj, MY_CLASS), part, content); + int_ret = efl_content_set(efl_part(eo_super(obj, MY_CLASS), part), content); if (!_elm_video_check(content)) return EINA_FALSE; if (sd->video == content) goto end; @@ -641,6 +644,7 @@ end: return EINA_TRUE; } + EOLIAN static void _elm_player_evas_object_smart_add(Eo *obj, Elm_Player_Data *priv) { @@ -714,8 +718,7 @@ EAPI Evas_Object * elm_player_add(Evas_Object *parent) { EINA_SAFETY_ON_NULL_RETURN_VAL(parent, NULL); - Evas_Object *obj = eo_add(MY_CLASS, parent); - return obj; + return eo_add(MY_CLASS, parent); } EOLIAN static Eo * @@ -747,4 +750,12 @@ _elm_player_elm_interface_atspi_widget_action_elm_actions_get(Eo *obj EINA_UNUSE return &atspi_actions[0]; } +/* Efl.Part implementation */ + +ELM_PART_OVERRIDE(elm_player, ELM_PLAYER, ELM_LAYOUT, Elm_Player_Data, Elm_Part_Data) +ELM_PART_OVERRIDE_CONTENT_SET(elm_player, ELM_PLAYER, ELM_LAYOUT, Elm_Player_Data, Elm_Part_Data) +#include "elm_player_internal_part.eo.c" + +/* End of Efl.Part */ + #include "elm_player.eo.c" diff --git a/src/lib/elementary/elc_popup.c b/src/lib/elementary/elc_popup.c index c5c57e56f9..7eaf31c284 100644 --- a/src/lib/elementary/elc_popup.c +++ b/src/lib/elementary/elc_popup.c @@ -13,6 +13,9 @@ #include "elm_popup_item.eo.h" +#include "elm_popup_internal_part.eo.h" +#include "elm_part_helper.h" + #define MY_CLASS ELM_POPUP_CLASS #define MY_CLASS_NAME "Elm_Popup" @@ -527,7 +530,7 @@ _elm_popup_elm_widget_sub_object_del(Eo *obj, Elm_Popup_Data *sd, Evas_Object *s { if (sobj == it->icon) { - efl_content_unset(VIEW(it), CONTENT_PART); + efl_content_unset(efl_part(VIEW(it), CONTENT_PART)); elm_layout_signal_emit(VIEW(it), "elm,state,item,icon,hidden", "elm"); it->icon = NULL; @@ -672,8 +675,8 @@ _create_scroller(Evas_Object *obj) _on_table_del, obj); if (!sd->scroll) { - efl_content_set(sd->content_area, CONTENT_PART, sd->tbl); - efl_content_set(sd->main_layout, CONTENT_PART, sd->content_area); + efl_content_set(efl_part(sd->content_area, CONTENT_PART), sd->tbl); + efl_content_set(efl_part(sd->main_layout, CONTENT_PART), sd->content_area); } //spacer @@ -789,7 +792,7 @@ _item_icon_set(Elm_Popup_Item_Data *it, { elm_widget_sub_object_add(WIDGET(it), it->icon); evas_object_data_set(it->icon, "_popup_icon_parent_item", it); - efl_content_set(VIEW(it), CONTENT_PART, it->icon); + efl_content_set(efl_part(VIEW(it), CONTENT_PART), it->icon); elm_layout_signal_emit(VIEW(it), "elm,state,item,icon,visible", "elm"); } else @@ -833,7 +836,7 @@ _item_icon_unset(Elm_Popup_Item_Data *it) if (!it->icon) return NULL; elm_widget_sub_object_del(WIDGET(it), icon); evas_object_data_del(icon, "_popup_icon_parent_item"); - efl_content_unset(VIEW(it), CONTENT_PART); + efl_content_unset(efl_part(VIEW(it), CONTENT_PART)); elm_layout_signal_emit(VIEW(it), "elm,state,item,icon,hidden", "elm"); it->icon = NULL; @@ -1005,7 +1008,7 @@ _content_text_set(Evas_Object *obj, else { if (!sd->scroll) - efl_content_set(sd->main_layout, CONTENT_PART, sd->content_area); + efl_content_set(efl_part(sd->main_layout, CONTENT_PART), sd->content_area); else elm_object_content_set(sd->scr, sd->content_area); } @@ -1013,7 +1016,7 @@ _content_text_set(Evas_Object *obj, if (sd->text_content_obj) { - sd->text_content_obj = efl_content_unset(sd->content_area, CONTENT_PART); + sd->text_content_obj = efl_content_unset(efl_part(sd->content_area, CONTENT_PART)); evas_object_del(sd->text_content_obj); sd->text_content_obj = NULL; } @@ -1032,7 +1035,7 @@ _content_text_set(Evas_Object *obj, evas_object_size_hint_align_set (sd->text_content_obj, EVAS_HINT_FILL, EVAS_HINT_FILL); efl_content_set - (sd->content_area, CONTENT_PART, sd->text_content_obj); + (efl_part(sd->content_area, CONTENT_PART), sd->text_content_obj); /* access */ if (_elm_config->access_mode) @@ -1120,7 +1123,7 @@ _title_icon_set(Evas_Object *obj, title_visibility_current = (sd->title_text) || (sd->title_icon); efl_content_set - (sd->main_layout, "elm.swallow.title.icon", sd->title_icon); + (efl_part(sd->main_layout, "elm.swallow.title.icon"), sd->title_icon); if (sd->title_icon) elm_layout_signal_emit(sd->main_layout, "elm,state,title,icon,visible", "elm"); @@ -1146,13 +1149,11 @@ _content_set(Evas_Object *obj, if (content) { if (!sd->scroll) - efl_content_set - (sd->main_layout, CONTENT_PART, sd->content_area); + efl_content_set(efl_part(sd->main_layout, CONTENT_PART), sd->content_area); else elm_object_content_set(sd->scr, sd->content_area); - efl_content_set - (sd->content_area, CONTENT_PART, content); + efl_content_set(efl_part(sd->content_area, CONTENT_PART), content); evas_object_event_callback_add (content, EVAS_CALLBACK_DEL, _on_content_del, obj); @@ -1208,8 +1209,7 @@ _action_button_set(Evas_Object *obj, evas_object_event_callback_add (sd->action_area, EVAS_CALLBACK_CHANGED_SIZE_HINTS, _size_hints_changed_cb, sd->main_layout); - efl_content_set - (sd->main_layout, "elm.swallow.action_area", sd->action_area); + efl_content_set(efl_part(sd->main_layout, "elm.swallow.action_area"), sd->action_area); _visuals_set(obj); } @@ -1223,8 +1223,8 @@ _action_button_set(Evas_Object *obj, (sd->action_area, buf, sd->buttons[idx]->btn); } -EOLIAN static Eina_Bool -_elm_popup_efl_container_content_set(Eo *obj, Elm_Popup_Data *_pd EINA_UNUSED, const char *part, Evas_Object *content) +static Eina_Bool +_elm_popup_content_set(Eo *obj, Elm_Popup_Data *_pd EINA_UNUSED, const char *part, Evas_Object *content) { unsigned int i; Eina_Bool ret = EINA_TRUE; @@ -1246,7 +1246,7 @@ _elm_popup_efl_container_content_set(Eo *obj, Elm_Popup_Data *_pd EINA_UNUSED, c _action_button_set(obj, content, i); } else - ret = efl_content_set(_pd->main_layout, part, content); + ret = efl_content_set(efl_part(_pd->main_layout, part), content); elm_layout_sizing_eval(obj); @@ -1280,8 +1280,8 @@ _action_button_get(const Evas_Object *obj, return button; } -EOLIAN static Evas_Object* -_elm_popup_efl_container_content_get(Eo *obj, Elm_Popup_Data *_pd, const char *part) +static Evas_Object* +_elm_popup_content_get(Eo *obj, Elm_Popup_Data *_pd, const char *part) { Evas_Object *content = NULL; unsigned int i; @@ -1300,7 +1300,7 @@ _elm_popup_efl_container_content_get(Eo *obj, Elm_Popup_Data *_pd, const char *p content = _action_button_get(obj, i); } else - content = efl_content_get(_pd->main_layout, part); + content = efl_content_get(efl_part(_pd->main_layout, part)); if (!content) goto err; @@ -1324,7 +1324,7 @@ _content_unset(Evas_Object *obj) evas_object_event_callback_del (sd->content, EVAS_CALLBACK_DEL, _on_content_del); - content = efl_content_unset(sd->content_area, CONTENT_PART); + content = efl_content_unset(efl_part(sd->content_area, CONTENT_PART)); sd->content = NULL; elm_layout_sizing_eval(obj); @@ -1342,14 +1342,14 @@ _title_icon_unset(Evas_Object *obj) if (!sd->title_icon) return NULL; icon = sd->title_icon; - efl_content_unset(sd->main_layout, "elm.swallow.title.icon"); + efl_content_unset(efl_part(sd->main_layout, "elm.swallow.title.icon")); sd->title_icon = NULL; return icon; } -EOLIAN static Evas_Object* -_elm_popup_efl_container_content_unset(Eo *obj, Elm_Popup_Data *_pd EINA_UNUSED, const char *part) +static Evas_Object* +_elm_popup_content_unset(Eo *obj, Elm_Popup_Data *_pd EINA_UNUSED, const char *part) { Evas_Object *content = NULL; unsigned int i; @@ -1798,8 +1798,7 @@ _elm_popup_item_append(Eo *obj, Elm_Popup_Data *sd, const char *label, Evas_Obje ELM_POPUP_ITEM_DATA_GET(eo_it, it); if (sd->content || sd->text_content_obj) { - prev_content = - efl_content_get(sd->content_area, CONTENT_PART); + prev_content = efl_content_get(efl_part(sd->content_area, CONTENT_PART)); evas_object_del(prev_content); } @@ -1840,14 +1839,14 @@ _elm_popup_scrollable_set(Eo *obj, Elm_Popup_Data *pd, Eina_Bool scroll) if (!pd->scroll) { - efl_content_set(pd->content_area, CONTENT_PART, pd->tbl); - efl_content_set(pd->main_layout, CONTENT_PART, pd->content_area); + efl_content_set(efl_part(pd->content_area, CONTENT_PART), pd->tbl); + efl_content_set(efl_part(pd->main_layout, CONTENT_PART), pd->content_area); if (pd->theme_scroll) elm_layout_signal_emit(pd->content_area, "elm,scroll,disable", "elm"); } else { - efl_content_set(pd->main_layout, CONTENT_PART, pd->tbl); + efl_content_set(efl_part(pd->main_layout, CONTENT_PART), pd->tbl); if (pd->theme_scroll) elm_layout_signal_emit(pd->content_area, "elm,scroll,enable", "elm"); } @@ -1902,5 +1901,15 @@ _elm_popup_elm_interface_atspi_accessible_state_set_get(Eo *obj, Elm_Popup_Data return ret; } +/* Efl.Part begin */ + +ELM_PART_OVERRIDE(elm_popup, ELM_POPUP, ELM_LAYOUT, Elm_Popup_Data, Elm_Part_Data) +ELM_PART_OVERRIDE_CONTENT_SET(elm_popup, ELM_POPUP, ELM_LAYOUT, Elm_Popup_Data, Elm_Part_Data) +ELM_PART_OVERRIDE_CONTENT_GET(elm_popup, ELM_POPUP, ELM_LAYOUT, Elm_Popup_Data, Elm_Part_Data) +ELM_PART_OVERRIDE_CONTENT_UNSET(elm_popup, ELM_POPUP, ELM_LAYOUT, Elm_Popup_Data, Elm_Part_Data) +#include "elm_popup_internal_part.eo.c" + +/* Efl.Part end */ + #include "elm_popup.eo.c" #include "elm_popup_item.eo.c" diff --git a/src/lib/elementary/elm_button.c b/src/lib/elementary/elm_button.c index fcafecd409..24334b6a20 100644 --- a/src/lib/elementary/elm_button.c +++ b/src/lib/elementary/elm_button.c @@ -10,6 +10,8 @@ #include "elm_priv.h" #include "elm_widget_button.h" #include "elm_widget_layout.h" +#include "elm_button_internal_part.eo.h" +#include "elm_part_helper.h" #define MY_CLASS ELM_BUTTON_CLASS @@ -148,12 +150,12 @@ _elm_button_elm_widget_sub_object_del(Eo *obj, Elm_Button_Data *_pd EINA_UNUSED, /* FIXME: replicated from elm_layout just because button's icon spot * is elm.swallow.content, not elm.swallow.icon. Fix that whenever we * can changed the theme API */ -EOLIAN static Eina_Bool -_elm_button_efl_container_content_set(Eo *obj, Elm_Button_Data *_pd EINA_UNUSED, const char *part, Evas_Object *content) +static Eina_Bool +_elm_button_content_set(Eo *obj, Elm_Button_Data *_pd EINA_UNUSED, const char *part, Evas_Object *content) { Eina_Bool int_ret = EINA_FALSE; - int_ret = efl_content_set(eo_super(obj, MY_CLASS), part, content); + int_ret = efl_content_set(efl_part(eo_super(obj, MY_CLASS), part), content); if (!int_ret) return EINA_FALSE; _icon_signal_emit(obj); @@ -443,4 +445,12 @@ _elm_button_class_constructor(Eo_Class *klass) evas_smart_legacy_type_register(MY_CLASS_NAME_LEGACY, klass); } +/* Efl.Part begin */ + +ELM_PART_OVERRIDE(elm_button, ELM_BUTTON, ELM_LAYOUT, Elm_Button_Data, Elm_Part_Data) +ELM_PART_OVERRIDE_CONTENT_SET(elm_button, ELM_BUTTON, ELM_LAYOUT, Elm_Button_Data, Elm_Part_Data) +#include "elm_button_internal_part.eo.c" + +/* Efl.Part end */ + #include "elm_button.eo.c" diff --git a/src/lib/elementary/elm_button.eo b/src/lib/elementary/elm_button.eo index 397667579d..a4c3fc265e 100644 --- a/src/lib/elementary/elm_button.eo +++ b/src/lib/elementary/elm_button.eo @@ -82,10 +82,10 @@ class Elm.Button (Elm.Layout, Evas.Clickable_Interface, Elm.Widget.theme_apply; Elm.Widget.sub_object_del; Elm.Widget.event; - Efl.Container.content.set; Elm.Layout.text_aliases.get; Elm.Layout.content_aliases.get; Elm.Layout.sizing_eval; Elm.Interface.Atspi_Widget_Action.elm_actions.get; + Efl.Part.part; } } diff --git a/src/lib/elementary/elm_button_internal_part.eo b/src/lib/elementary/elm_button_internal_part.eo new file mode 100644 index 0000000000..99b57dd6be --- /dev/null +++ b/src/lib/elementary/elm_button_internal_part.eo @@ -0,0 +1,7 @@ +class Elm.Button.Internal.Part (Elm.Layout.Internal.Part) +{ + data: null; + implements { + Efl.Container.content.set; + } +} diff --git a/src/lib/elementary/elm_ctxpopup.eo b/src/lib/elementary/elm_ctxpopup.eo index e99b06779b..42afb26cdc 100644 --- a/src/lib/elementary/elm_ctxpopup.eo +++ b/src/lib/elementary/elm_ctxpopup.eo @@ -214,14 +214,12 @@ class Elm.Ctxpopup (Elm.Layout, Elm.Interface.Atspi_Widget_Action, Efl.Orientati Elm.Widget.translate; Elm.Widget.theme_apply; Elm.Widget.event; - Efl.Container.content.get; - Efl.Container.content.set; - Efl.Container.content_unset; Elm.Layout.sub_object_add_enable; Elm.Layout.sizing_eval; Elm.Interface.Atspi_Widget_Action.elm_actions.get; Elm.Interface.Atspi_Accessible.state_set.get; Efl.Orientation.orientation; + Efl.Part.part; } events { dismissed; diff --git a/src/lib/elementary/elm_ctxpopup_internal_part.eo b/src/lib/elementary/elm_ctxpopup_internal_part.eo new file mode 100644 index 0000000000..6538d4067c --- /dev/null +++ b/src/lib/elementary/elm_ctxpopup_internal_part.eo @@ -0,0 +1,9 @@ +class Elm.Ctxpopup.Internal.Part (Elm.Layout.Internal.Part) +{ + data: null; + implements { + Efl.Container.content.set; + Efl.Container.content.get; + Efl.Container.content_unset; + } +} diff --git a/src/lib/elementary/elm_dayselector.c b/src/lib/elementary/elm_dayselector.c index f97381a478..500db014ab 100644 --- a/src/lib/elementary/elm_dayselector.c +++ b/src/lib/elementary/elm_dayselector.c @@ -9,6 +9,9 @@ #include "elm_widget_dayselector.h" #include "elm_widget_container.h" +#include "elm_dayselector_internal_part.eo.h" +#include "elm_part_helper.h" + #define MY_CLASS ELM_DAYSELECTOR_CLASS #define MY_CLASS_NAME "Elm_Dayselector" @@ -216,8 +219,8 @@ _item_find(const Evas_Object *obj, return NULL; } -EOLIAN static Eina_Bool -_elm_dayselector_efl_container_content_set(Eo *obj, Elm_Dayselector_Data *sd, const char *item, Evas_Object *content) +static Eina_Bool +_elm_dayselector_content_set(Eo *obj, Elm_Dayselector_Data *sd, const char *item, Evas_Object *content) { Eina_Bool int_ret = EINA_FALSE; @@ -239,7 +242,7 @@ _elm_dayselector_efl_container_content_set(Eo *obj, Elm_Dayselector_Data *sd, co { snprintf(buf, sizeof(buf), "day%d", _item_location_get(sd, it)); - int_ret = efl_content_set(eo_super(obj, MY_CLASS), buf, content); + int_ret = efl_content_set(efl_part(eo_super(obj, MY_CLASS), buf), content); if (!int_ret) return EINA_FALSE; if (!content) return EINA_TRUE; /* item deletion already handled */ @@ -255,7 +258,7 @@ _elm_dayselector_efl_container_content_set(Eo *obj, Elm_Dayselector_Data *sd, co snprintf(buf, sizeof(buf), "day%d", _item_location_get(sd, it)); - int_ret = efl_content_set(eo_super(obj, MY_CLASS), buf, content); + int_ret = efl_content_set(efl_part(eo_super(obj, MY_CLASS), buf), content); if (!int_ret) { eo_unref(eo_it); @@ -298,8 +301,8 @@ _elm_dayselector_item_eo_base_constructor(Eo *eo_item, Elm_Dayselector_Item_Data return eo_item; } -EOLIAN static Evas_Object* -_elm_dayselector_efl_container_content_unset(Eo *obj, Elm_Dayselector_Data *sd, const char *item) +static Evas_Object* +_elm_dayselector_content_unset(Eo *obj, Elm_Dayselector_Data *sd, const char *item) { int day; char buf[1024]; @@ -314,7 +317,7 @@ _elm_dayselector_efl_container_content_unset(Eo *obj, Elm_Dayselector_Data *sd, content = VIEW(it); - content = efl_content_unset(eo_super(obj, MY_CLASS), buf); + content = efl_content_unset(efl_part(eo_super(obj, MY_CLASS), buf)); if (!content) return NULL; sd->items = eina_list_remove(sd->items, it); @@ -612,6 +615,15 @@ _elm_dayselector_class_constructor(Eo_Class *klass) evas_smart_legacy_type_register(MY_CLASS_NAME_LEGACY, klass); } +/* Efl.Part begin */ + +ELM_PART_OVERRIDE(elm_dayselector, ELM_DAYSELECTOR, ELM_LAYOUT, Elm_Dayselector_Data, Elm_Part_Data) +ELM_PART_OVERRIDE_CONTENT_SET(elm_dayselector, ELM_DAYSELECTOR, ELM_LAYOUT, Elm_Dayselector_Data, Elm_Part_Data) +ELM_PART_OVERRIDE_CONTENT_UNSET(elm_dayselector, ELM_DAYSELECTOR, ELM_LAYOUT, Elm_Dayselector_Data, Elm_Part_Data) +#include "elm_dayselector_internal_part.eo.c" + +/* Efl.Part end */ + #include "elm_dayselector.eo.c" #include "elm_dayselector_item.eo.c" diff --git a/src/lib/elementary/elm_dayselector.eo b/src/lib/elementary/elm_dayselector.eo index 3604836812..a0d2935925 100644 --- a/src/lib/elementary/elm_dayselector.eo +++ b/src/lib/elementary/elm_dayselector.eo @@ -155,9 +155,8 @@ class Elm.Dayselector (Elm.Layout) Elm.Widget.theme_apply; Elm.Widget.focus_direction_manager_is; Elm.Widget.translate; - Efl.Container.content_unset; - Efl.Container.content.set; Elm.Layout.sizing_eval; + Efl.Part.part; } events { dayselector,changed; diff --git a/src/lib/elementary/elm_dayselector_internal_part.eo b/src/lib/elementary/elm_dayselector_internal_part.eo new file mode 100644 index 0000000000..9cf6c32abb --- /dev/null +++ b/src/lib/elementary/elm_dayselector_internal_part.eo @@ -0,0 +1,8 @@ +class Elm.Dayselector.Internal.Part (Elm.Layout.Internal.Part) +{ + data: null; + implements { + Efl.Container.content.set; + Efl.Container.content_unset; + } +} diff --git a/src/lib/elementary/elm_entry.c b/src/lib/elementary/elm_entry.c index 466e397513..1134ee1443 100644 --- a/src/lib/elementary/elm_entry.c +++ b/src/lib/elementary/elm_entry.c @@ -12,6 +12,9 @@ #include "elm_priv.h" #include "elm_widget_entry.h" +#include "elm_entry_internal_part.eo.h" +#include "elm_part_helper.h" + #define MY_CLASS ELM_ENTRY_CLASS #define MY_CLASS_NAME "Elm_Entry" @@ -3048,11 +3051,11 @@ _elm_entry_elm_layout_signal_callback_del(Eo *obj, Elm_Entry_Data *sd, const cha return data; } -EOLIAN static Eina_Bool -_elm_entry_efl_container_content_set(Eo *obj, Elm_Entry_Data *_pd EINA_UNUSED, const char *part, Evas_Object *content) +static Eina_Bool +_elm_entry_content_set(Eo *obj, Elm_Entry_Data *_pd EINA_UNUSED, const char *part, Evas_Object *content) { Eina_Bool int_ret = EINA_FALSE; - int_ret = efl_content_set(eo_super(obj, MY_CLASS), part, content); + int_ret = efl_content_set(efl_part(eo_super(obj, MY_CLASS), part), content); if (!int_ret) return EINA_FALSE; /* too bad entry does not follow the pattern @@ -3066,11 +3069,11 @@ _elm_entry_efl_container_content_set(Eo *obj, Elm_Entry_Data *_pd EINA_UNUSED, c return EINA_TRUE; } -EOLIAN static Evas_Object* -_elm_entry_efl_container_content_unset(Eo *obj, Elm_Entry_Data *_pd EINA_UNUSED, const char *part) +static Evas_Object* +_elm_entry_content_unset(Eo *obj, Elm_Entry_Data *_pd EINA_UNUSED, const char *part) { Evas_Object *ret = NULL; - ret = efl_content_unset(eo_super(obj, MY_CLASS), part); + ret = efl_content_unset(efl_part(eo_super(obj, MY_CLASS), part)); if (!ret) return NULL; /* too bad entry does not follow the pattern @@ -5927,4 +5930,13 @@ _elm_entry_elm_interface_atspi_accessible_name_get(Eo *obj, Elm_Entry_Data *sd) return ret ? strdup(ret) : NULL; } +/* Efl.Part begin */ + +ELM_PART_OVERRIDE(elm_entry, ELM_ENTRY, ELM_LAYOUT, Elm_Entry_Data, Elm_Part_Data) +ELM_PART_OVERRIDE_CONTENT_SET(elm_entry, ELM_ENTRY, ELM_LAYOUT, Elm_Entry_Data, Elm_Part_Data) +ELM_PART_OVERRIDE_CONTENT_UNSET(elm_entry, ELM_ENTRY, ELM_LAYOUT, Elm_Entry_Data, Elm_Part_Data) +#include "elm_entry_internal_part.eo.c" + +/* Efl.Part end */ + #include "elm_entry.eo.c" diff --git a/src/lib/elementary/elm_entry.eo b/src/lib/elementary/elm_entry.eo index e8118227f8..196b58a1ef 100644 --- a/src/lib/elementary/elm_entry.eo +++ b/src/lib/elementary/elm_entry.eo @@ -950,8 +950,6 @@ class Elm.Entry (Elm.Layout, Elm.Interface_Scrollable, Evas.Clickable_Interface, Elm.Widget.disable; Elm.Widget.sub_object_del; Elm.Widget.focus_next_manager_is; - Efl.Container.content_unset; - Efl.Container.content.set; Elm.Layout.theme_enable; Elm.Layout.sizing_eval; Elm.Layout.text.get; @@ -990,6 +988,7 @@ class Elm.Entry (Elm.Layout, Elm.Interface_Scrollable, Evas.Clickable_Interface, Elm.Interface.Atspi.Text.Editable.paste; Efl.File.file.set; Efl.File.file.get; + Efl.Part.part; } events { activated; diff --git a/src/lib/elementary/elm_entry_internal_part.eo b/src/lib/elementary/elm_entry_internal_part.eo new file mode 100644 index 0000000000..98f2e840a2 --- /dev/null +++ b/src/lib/elementary/elm_entry_internal_part.eo @@ -0,0 +1,8 @@ +class Elm.Entry.Internal.Part (Elm.Layout.Internal.Part) +{ + data: null; + implements { + Efl.Container.content.set; + Efl.Container.content_unset; + } +} diff --git a/src/lib/elementary/elm_fileselector_entry.eo b/src/lib/elementary/elm_fileselector_entry.eo index 401d2959c6..0b369df7bd 100644 --- a/src/lib/elementary/elm_fileselector_entry.eo +++ b/src/lib/elementary/elm_fileselector_entry.eo @@ -13,9 +13,6 @@ class Elm.Fileselector_Entry (Elm.Layout, Elm.Interface.Fileselector, Elm.Widget.focus_next; Elm.Widget.disable; Elm.Widget.focus_direction_manager_is; - Efl.Container.content.get; - Efl.Container.content_unset; - Efl.Container.content.set; Elm.Layout.text.set; Elm.Layout.text.get; Elm.Layout.sizing_eval; @@ -24,6 +21,7 @@ class Elm.Fileselector_Entry (Elm.Layout, Elm.Interface.Fileselector, Elm.Interface.Fileselector.is_save; Elm.Interface.Fileselector.path; Elm.Interface.Fileselector.expandable; + Efl.Part.part; } events { changed; diff --git a/src/lib/elementary/elm_fileselector_entry_internal_part.eo b/src/lib/elementary/elm_fileselector_entry_internal_part.eo new file mode 100644 index 0000000000..0d545ce3c9 --- /dev/null +++ b/src/lib/elementary/elm_fileselector_entry_internal_part.eo @@ -0,0 +1,9 @@ +class Elm.Fileselector.Entry.Internal.Part (Elm.Layout.Internal.Part) +{ + data: null; + implements { + Efl.Container.content.set; + Efl.Container.content.get; + Efl.Container.content_unset; + } +} diff --git a/src/lib/elementary/elm_flip.c b/src/lib/elementary/elm_flip.c index ac1e11ff69..e9b61a1b8d 100644 --- a/src/lib/elementary/elm_flip.c +++ b/src/lib/elementary/elm_flip.c @@ -9,6 +9,9 @@ #include "elm_widget_flip.h" #include "elm_widget_container.h" +#include "elm_flip_internal_part.eo.h" +#include "elm_part_helper.h" + #define MY_CLASS ELM_FLIP_CLASS #define MY_CLASS_NAME "Elm_Flip" @@ -1770,8 +1773,8 @@ _flip_content_unset(Evas_Object *obj, return content; } -EOLIAN static Eina_Bool -_elm_flip_efl_container_content_set(Eo *obj, Elm_Flip_Data *_pd EINA_UNUSED, const char *part, Evas_Object *content) +static Eina_Bool +_elm_flip_content_set(Eo *obj, Elm_Flip_Data *_pd EINA_UNUSED, const char *part, Evas_Object *content) { if (!part || !strcmp(part, "front")) return _flip_content_set(obj, content, EINA_TRUE); @@ -1780,8 +1783,8 @@ _elm_flip_efl_container_content_set(Eo *obj, Elm_Flip_Data *_pd EINA_UNUSED, con return EINA_FALSE; } -EOLIAN static Evas_Object* -_elm_flip_efl_container_content_get(Eo *obj EINA_UNUSED, Elm_Flip_Data *sd, const char *part) +static Evas_Object* +_elm_flip_content_get(Eo *obj EINA_UNUSED, Elm_Flip_Data *sd, const char *part) { if (!part || !strcmp(part, "front")) return sd->front.content; @@ -1790,8 +1793,8 @@ _elm_flip_efl_container_content_get(Eo *obj EINA_UNUSED, Elm_Flip_Data *sd, cons return NULL; } -EOLIAN static Evas_Object* -_elm_flip_efl_container_content_unset(Eo *obj EINA_UNUSED, Elm_Flip_Data *_pd EINA_UNUSED, const char *part) +static Evas_Object* +_elm_flip_content_unset(Eo *obj EINA_UNUSED, Elm_Flip_Data *_pd EINA_UNUSED, const char *part) { if (!part || !strcmp(part, "front")) return _flip_content_unset(obj, EINA_TRUE); @@ -2066,4 +2069,14 @@ _elm_flip_class_constructor(Eo_Class *klass) evas_smart_legacy_type_register(MY_CLASS_NAME_LEGACY, klass); } +/* Efl.Part begin */ + +ELM_PART_IMPLEMENT(elm_flip, ELM_FLIP, Elm_Flip_Data, Elm_Part_Data) +ELM_PART_IMPLEMENT_CONTENT_SET(elm_flip, ELM_FLIP, Elm_Flip_Data, Elm_Part_Data) +ELM_PART_IMPLEMENT_CONTENT_GET(elm_flip, ELM_FLIP, Elm_Flip_Data, Elm_Part_Data) +ELM_PART_IMPLEMENT_CONTENT_UNSET(elm_flip, ELM_FLIP, Elm_Flip_Data, Elm_Part_Data) +#include "elm_flip_internal_part.eo.c" + +/* Efl.Part end */ + #include "elm_flip.eo.c" diff --git a/src/lib/elementary/elm_flip.eo b/src/lib/elementary/elm_flip.eo index 335f10e40d..9edc6de806 100644 --- a/src/lib/elementary/elm_flip.eo +++ b/src/lib/elementary/elm_flip.eo @@ -33,7 +33,7 @@ enum Elm.Flip.Direction right [[Allows interaction with the right portion of the widget]] } -class Elm.Flip (Elm.Widget, Efl.Container) +class Elm.Flip (Elm.Widget, Efl.Part) { legacy_prefix: elm_flip; eo_prefix: elm_obj_flip; @@ -240,9 +240,7 @@ class Elm.Flip (Elm.Widget, Efl.Container) Elm.Widget.focus_next_manager_is; Elm.Widget.focus_next; Elm.Widget.sub_object_del; - Efl.Container.content.get; - Efl.Container.content.set; - Efl.Container.content_unset; + Efl.Part.part; } events { animate,begin; diff --git a/src/lib/elementary/elm_flip_internal_part.eo b/src/lib/elementary/elm_flip_internal_part.eo new file mode 100644 index 0000000000..08792295e9 --- /dev/null +++ b/src/lib/elementary/elm_flip_internal_part.eo @@ -0,0 +1,10 @@ +class Elm.Flip.Internal.Part (Eo.Base, Efl.Container) +{ + data: Elm_Part_Data; + implements { + Eo.Base.destructor; + Efl.Container.content.set; + Efl.Container.content.get; + Efl.Container.content_unset; + } +} diff --git a/src/lib/elementary/elm_hover.c b/src/lib/elementary/elm_hover.c index 4cff56c5d7..d83efb055d 100644 --- a/src/lib/elementary/elm_hover.c +++ b/src/lib/elementary/elm_hover.c @@ -12,6 +12,9 @@ #include "elm_priv.h" #include "elm_widget_hover.h" +#include "elm_hover_internal_part.eo.h" +#include "elm_part_helper.h" + #define MY_CLASS ELM_HOVER_CLASS #define MY_CLASS_NAME "Elm_Hover" @@ -396,8 +399,8 @@ _elm_hover_subs_del(Elm_Hover_Data *sd) sd->smt_sub = NULL; } -EOLIAN static Eina_Bool -_elm_hover_efl_container_content_set(Eo *obj, Elm_Hover_Data *sd, const char *swallow, Evas_Object *content) +static Eina_Bool +_elm_hover_content_set(Eo *obj, Elm_Hover_Data *sd, const char *swallow, Evas_Object *content) { Eina_Bool int_ret; @@ -435,7 +438,7 @@ _elm_hover_efl_container_content_set(Eo *obj, Elm_Hover_Data *sd, const char *sw } } - int_ret = efl_content_set(eo_super(obj, MY_CLASS), swallow, content); + int_ret = efl_content_set(efl_part(eo_super(obj, MY_CLASS), swallow), content); if (!int_ret) return EINA_FALSE; if (strstr(swallow, "elm.swallow.slot.")) @@ -455,36 +458,26 @@ end: return EINA_TRUE; } -EOLIAN static Evas_Object* -_elm_hover_efl_container_content_get(Eo *obj, Elm_Hover_Data *sd, const char *swallow) +static Evas_Object* +_elm_hover_content_get(Eo *obj, Elm_Hover_Data *sd, const char *swallow) { - Evas_Object *ret; - ret = NULL; - - if (!swallow) return ret; - - if (!strcmp(swallow, "smart")) - ret = efl_content_get(eo_super(obj, MY_CLASS), sd->smt_sub->swallow); - else - ret = efl_content_get(eo_super(obj, MY_CLASS), swallow); - - return ret; -} - -EOLIAN static Evas_Object* -_elm_hover_efl_container_content_unset(Eo *obj, Elm_Hover_Data *sd, const char *swallow) -{ - Evas_Object *ret = NULL; - if (!swallow) return NULL; if (!strcmp(swallow, "smart")) - ret = efl_content_unset - (eo_super(obj, MY_CLASS), sd->smt_sub->swallow); + return efl_content_get(efl_part(eo_super(obj, MY_CLASS), sd->smt_sub->swallow)); else - ret = efl_content_unset - (eo_super(obj, MY_CLASS), swallow); - return ret; + return efl_content_get(efl_part(eo_super(obj, MY_CLASS), swallow)); +} + +static Evas_Object* +_elm_hover_content_unset(Eo *obj, Elm_Hover_Data *sd, const char *swallow) +{ + if (!swallow) return NULL; + + if (!strcmp(swallow, "smart")) + return efl_content_unset(efl_part(eo_super(obj, MY_CLASS), sd->smt_sub->swallow)); + else + return efl_content_unset(efl_part(eo_super(obj, MY_CLASS), swallow)); } static void @@ -850,4 +843,14 @@ _elm_hover_elm_interface_atspi_widget_action_elm_actions_get(Eo *obj EINA_UNUSED return &atspi_actions[0]; } +/* Efl.Part begin */ + +ELM_PART_OVERRIDE(elm_hover, ELM_HOVER, ELM_LAYOUT, Elm_Hover_Data, Elm_Part_Data) +ELM_PART_OVERRIDE_CONTENT_SET(elm_hover, ELM_HOVER, ELM_LAYOUT, Elm_Hover_Data, Elm_Part_Data) +ELM_PART_OVERRIDE_CONTENT_GET(elm_hover, ELM_HOVER, ELM_LAYOUT, Elm_Hover_Data, Elm_Part_Data) +ELM_PART_OVERRIDE_CONTENT_UNSET(elm_hover, ELM_HOVER, ELM_LAYOUT, Elm_Hover_Data, Elm_Part_Data) +#include "elm_hover_internal_part.eo.c" + +/* Efl.Part end */ + #include "elm_hover.eo.c" diff --git a/src/lib/elementary/elm_hover.eo b/src/lib/elementary/elm_hover.eo index 8739d5eebf..0b74521fda 100644 --- a/src/lib/elementary/elm_hover.eo +++ b/src/lib/elementary/elm_hover.eo @@ -72,12 +72,10 @@ class Elm.Hover (Elm.Layout, Evas.Clickable_Interface, Elm.Interface.Atspi_Widge Elm.Widget.focus_direction_manager_is; Elm.Widget.focus_next_manager_is; Elm.Widget.sub_object_del; - Efl.Container.content.get; - Efl.Container.content.set; - Efl.Container.content_unset; Elm.Layout.sizing_eval; Elm.Layout.content_aliases.get; Elm.Interface.Atspi_Widget_Action.elm_actions.get; + Efl.Part.part; } events { smart,changed; diff --git a/src/lib/elementary/elm_hover_internal_part.eo b/src/lib/elementary/elm_hover_internal_part.eo new file mode 100644 index 0000000000..80df3ae486 --- /dev/null +++ b/src/lib/elementary/elm_hover_internal_part.eo @@ -0,0 +1,9 @@ +class Elm.Hover.Internal.Part (Elm.Layout.Internal.Part) +{ + data: null; + implements { + Efl.Container.content.set; + Efl.Container.content.get; + Efl.Container.content_unset; + } +} diff --git a/src/lib/elementary/elm_inwin.c b/src/lib/elementary/elm_inwin.c index d601cef941..9ec6ba388a 100644 --- a/src/lib/elementary/elm_inwin.c +++ b/src/lib/elementary/elm_inwin.c @@ -137,29 +137,24 @@ _elm_inwin_activate(Eo *obj, void *_pd EINA_UNUSED) } EAPI void -elm_win_inwin_content_set(Evas_Object *obj, - Evas_Object *content) +elm_win_inwin_content_set(Evas_Object *obj, Evas_Object *content) { ELM_INWIN_CHECK(obj); - efl_content_set(obj, NULL, content); + efl_content_set(obj, content); } EAPI Evas_Object * elm_win_inwin_content_get(const Evas_Object *obj) { ELM_INWIN_CHECK(obj) NULL; - Evas_Object *ret = NULL; - ret = efl_content_get((Eo *)obj, NULL); - return ret; + return efl_content_get(obj); } EAPI Evas_Object * elm_win_inwin_content_unset(Evas_Object *obj) { ELM_INWIN_CHECK(obj) NULL; - Evas_Object *ret = NULL; - ret = efl_content_unset(obj, NULL); - return ret; + return efl_content_unset(obj); } static void diff --git a/src/lib/elementary/elm_inwin.eo b/src/lib/elementary/elm_inwin.eo index facb9dc8ef..552d0d46fc 100644 --- a/src/lib/elementary/elm_inwin.eo +++ b/src/lib/elementary/elm_inwin.eo @@ -28,5 +28,4 @@ class Elm.Inwin (Elm.Layout) Elm.Layout.content_aliases.get; Elm.Layout.sizing_eval; } - } diff --git a/src/lib/elementary/elm_layout.c b/src/lib/elementary/elm_layout.c index c6694cf9e5..2d5a8384bb 100644 --- a/src/lib/elementary/elm_layout.c +++ b/src/lib/elementary/elm_layout.c @@ -10,6 +10,9 @@ #include "elm_priv.h" #include "elm_widget_layout.h" +#include "elm_layout_internal_part.eo.h" +#include "elm_part_helper.h" + #define MY_CLASS ELM_LAYOUT_CLASS #define MY_CLASS_NAME "Elm_Layout" @@ -975,13 +978,12 @@ elm_layout_content_set(Evas_Object *obj, Evas_Object *content) { ELM_LAYOUT_CHECK(obj) EINA_FALSE; - Eina_Bool ret = EINA_FALSE; - ret = efl_content_set(obj, swallow, content); - return ret; + + return efl_content_set(efl_part(obj, swallow), content); } -EOLIAN static Eina_Bool -_elm_layout_efl_container_content_set(Eo *obj, Elm_Layout_Smart_Data *sd, const char *part, Evas_Object *content) +static Eina_Bool +_elm_layout_content_set(Eo *obj, Elm_Layout_Smart_Data *sd, const char *part, Evas_Object *content) { Elm_Layout_Sub_Object_Data *sub_d; const Eina_List *l; @@ -1053,14 +1055,12 @@ elm_layout_content_get(const Evas_Object *obj, const char *swallow) { ELM_LAYOUT_CHECK(obj) NULL; - Evas_Object *ret = NULL; - ret = efl_content_get((Eo *) obj, swallow); - return ret; + return efl_content_get(efl_part(obj, swallow)); } -EOLIAN static Evas_Object* -_elm_layout_efl_container_content_get(Eo *obj, Elm_Layout_Smart_Data *sd, const char *part) +static Evas_Object* +_elm_layout_content_get(Eo *obj, Elm_Layout_Smart_Data *sd, const char *part) { const Eina_List *l; Elm_Layout_Sub_Object_Data *sub_d; @@ -1074,6 +1074,7 @@ _elm_layout_efl_container_content_get(Eo *obj, Elm_Layout_Smart_Data *sd, const { if (sub_d->type == SWALLOW) return sub_d->obj; + /* FIXME: Implement as efl_part */ if ((sub_d->type == TABLE_PACK) || _sub_box_is(sub_d)) return _elm_layout_pack_proxy_get(obj, sub_d->obj, sub_d->part); } @@ -1084,7 +1085,7 @@ _elm_layout_efl_container_content_get(Eo *obj, Elm_Layout_Smart_Data *sd, const if (!_elm_layout_part_aliasing_eval(obj, sd, &part, EINA_FALSE)) return NULL; - return efl_content_get(wd->resize_obj, part); + return efl_content_get(efl_part(wd->resize_obj, part)); } EAPI Evas_Object * @@ -1093,12 +1094,12 @@ elm_layout_content_unset(Evas_Object *obj, { ELM_LAYOUT_CHECK(obj) NULL; Evas_Object *ret = NULL; - ret = efl_content_unset(obj, swallow); + ret = efl_content_unset(efl_part(obj, swallow)); return ret; } -EOLIAN static Evas_Object* -_elm_layout_efl_container_content_unset(Eo *obj, Elm_Layout_Smart_Data *sd, const char *part) +static Evas_Object* +_elm_layout_content_unset(Eo *obj, Elm_Layout_Smart_Data *sd, const char *part) { Elm_Layout_Sub_Object_Data *sub_d; const Eina_List *l; @@ -1135,6 +1136,24 @@ _elm_layout_efl_container_content_unset(Eo *obj, Elm_Layout_Smart_Data *sd, cons return NULL; } +EOLIAN static Eina_Bool +_elm_layout_efl_container_content_set(Eo *obj, Elm_Layout_Smart_Data *sd, Evas_Object *content) +{ + return _elm_layout_content_set(obj, sd, NULL, content); +} + +EOLIAN static Evas_Object* +_elm_layout_efl_container_content_get(Eo *obj EINA_UNUSED, Elm_Layout_Smart_Data *sd) +{ + return _elm_layout_content_get(obj, sd, NULL); +} + +EOLIAN static Evas_Object* +_elm_layout_efl_container_content_unset(Eo *obj, Elm_Layout_Smart_Data *sd) +{ + return _elm_layout_content_unset(obj, sd, NULL); +} + EOLIAN static Eina_Bool _elm_layout_efl_container_content_remove(Eo *obj, Elm_Layout_Smart_Data *sd EINA_UNUSED, Efl_Gfx *content) @@ -1899,6 +1918,8 @@ EOLIAN static void _elm_layout_class_constructor(Eo_Class *klass) evas_smart_legacy_type_register(MY_CLASS_NAME_LEGACY, klass); } + + /* Legacy APIs */ EAPI Eina_Bool @@ -1916,7 +1937,7 @@ elm_layout_file_get(Eo *obj, const char **file, const char **group) EAPI Eina_Bool elm_layout_box_append(Elm_Layout *obj, const char *part, Evas_Object *child) { - Eo *box = efl_content_get(obj, part); + Eo *box = efl_content_get(efl_part(obj, part)); if (!box) return EINA_FALSE; efl_pack(box, child); return EINA_TRUE; @@ -1925,7 +1946,7 @@ elm_layout_box_append(Elm_Layout *obj, const char *part, Evas_Object *child) EAPI Eina_Bool elm_layout_box_prepend(Elm_Layout *obj, const char *part, Evas_Object *child) { - Eo *box = efl_content_get(obj, part); + Eo *box = efl_content_get(efl_part(obj, part)); if (!box) return EINA_FALSE; efl_pack_begin(box, child); return EINA_TRUE; @@ -1934,13 +1955,13 @@ elm_layout_box_prepend(Elm_Layout *obj, const char *part, Evas_Object *child) EAPI Eina_Bool elm_layout_box_insert_before(Elm_Layout *obj, const char *part, Evas_Object *child, const Evas_Object *reference) { - return efl_pack_before(efl_content_get(obj, part), child, reference); + return efl_pack_before(efl_content_get(efl_part(obj, part)), child, reference); } EAPI Eina_Bool elm_layout_box_insert_at(Elm_Layout *obj, const char *part, Evas_Object *child, unsigned int pos) { - Eo *box = efl_content_get(obj, part); + Eo *box = efl_content_get(efl_part(obj, part)); if (!box) return EINA_FALSE; efl_pack_at(box, child, pos); return EINA_TRUE; @@ -1949,7 +1970,7 @@ elm_layout_box_insert_at(Elm_Layout *obj, const char *part, Evas_Object *child, EAPI Evas_Object * elm_layout_box_remove(Elm_Layout *obj, const char *part, Evas_Object *child) { - Eo *box = efl_content_get(obj, part); + Eo *box = efl_content_get(efl_part(obj, part)); if (!box) return NULL; if (!efl_pack_unpack(box, child)) return NULL; @@ -1959,7 +1980,7 @@ elm_layout_box_remove(Elm_Layout *obj, const char *part, Evas_Object *child) EAPI Eina_Bool elm_layout_box_remove_all(Elm_Layout *obj, const char *part, Eina_Bool clear) { - Eo *box = efl_content_get(obj, part); + Eo *box = efl_content_get(efl_part(obj, part)); if (!box) return EINA_FALSE; if (clear) efl_pack_clear(box); @@ -1971,7 +1992,7 @@ elm_layout_box_remove_all(Elm_Layout *obj, const char *part, Eina_Bool clear) EAPI Eina_Bool elm_layout_table_pack(Elm_Layout *obj, const char *part, Evas_Object *child, unsigned short col, unsigned short row, unsigned short colspan, unsigned short rowspan) { - Eo *table = efl_content_get(obj, part); + Eo *table = efl_content_get(efl_part(obj, part)); if (!table) return EINA_FALSE; efl_pack_grid(table, child, col, row, colspan, rowspan); return EINA_TRUE; @@ -1980,7 +2001,7 @@ elm_layout_table_pack(Elm_Layout *obj, const char *part, Evas_Object *child, uns EAPI Evas_Object * elm_layout_table_unpack(Elm_Layout *obj, const char *part, Evas_Object *child) { - Eo *table = efl_content_get(obj, part); + Eo *table = efl_content_get(efl_part(obj, part)); if (!table) return NULL; if (efl_pack_unpack(table, child)) return child; @@ -1990,7 +2011,7 @@ elm_layout_table_unpack(Elm_Layout *obj, const char *part, Evas_Object *child) EAPI Eina_Bool elm_layout_table_clear(Elm_Layout *obj, const char *part, Eina_Bool clear) { - Eo *table = efl_content_get(obj, part); + Eo *table = efl_content_get(efl_part(obj, part)); if (!table) return EINA_FALSE; if (clear) efl_pack_clear(table); @@ -1999,4 +2020,14 @@ elm_layout_table_clear(Elm_Layout *obj, const char *part, Eina_Bool clear) return EINA_TRUE; } +/* Efl.Part implementation */ + +ELM_PART_IMPLEMENT(elm_layout, ELM_LAYOUT, Elm_Layout_Smart_Data, Elm_Part_Data) +ELM_PART_IMPLEMENT_CONTENT_SET(elm_layout, ELM_LAYOUT, Elm_Layout_Smart_Data, Elm_Part_Data) +ELM_PART_IMPLEMENT_CONTENT_GET(elm_layout, ELM_LAYOUT, Elm_Layout_Smart_Data, Elm_Part_Data) +ELM_PART_IMPLEMENT_CONTENT_UNSET(elm_layout, ELM_LAYOUT, Elm_Layout_Smart_Data, Elm_Part_Data) +#include "elm_layout_internal_part.eo.c" + +/* Efl.Part end */ + #include "elm_layout.eo.c" diff --git a/src/lib/elementary/elm_layout.eo b/src/lib/elementary/elm_layout.eo index 92134e7d3b..d245c65f34 100644 --- a/src/lib/elementary/elm_layout.eo +++ b/src/lib/elementary/elm_layout.eo @@ -17,7 +17,7 @@ struct Elm.Layout_Part_Alias_Description real_part: const(char)*; [[Target part name for the alias set on Elm.Layout_Part_Proxies_Description::real_part. An example of usage would be "default" on that field, with "elm.content.swallow" on this one]] } -class Elm.Layout (Elm.Widget, Efl.Container, Efl.File) +class Elm.Layout (Elm.Widget, Efl.Part, Efl.Container, Efl.File) { legacy_prefix: elm_layout; eo_prefix: elm_obj_layout; @@ -343,13 +343,14 @@ class Elm.Layout (Elm.Widget, Efl.Container, Efl.File) Elm.Widget.disable; Elm.Widget.sub_object_del; Elm.Widget.on_focus; - Efl.Container.content.get; - Efl.Container.content.set; - Efl.Container.content_unset; Efl.Container.content_part_name.get; Efl.Container.content_count; Efl.Container.content_remove; Efl.Container.content_iterate; + Efl.Container.content.set; + Efl.Container.content.get; + Efl.Container.content_unset; + Efl.Part.part; } events { theme,changed; diff --git a/src/lib/elementary/elm_layout_internal_part.eo b/src/lib/elementary/elm_layout_internal_part.eo new file mode 100644 index 0000000000..79800be1c8 --- /dev/null +++ b/src/lib/elementary/elm_layout_internal_part.eo @@ -0,0 +1,10 @@ +class Elm.Layout.Internal.Part (Eo.Base, Efl.Container) +{ + data: Elm_Part_Data; + implements { + Eo.Base.destructor; + Efl.Container.content.set; + Efl.Container.content.get; + Efl.Container.content_unset; + } +} diff --git a/src/lib/elementary/elm_layout_pack.c b/src/lib/elementary/elm_layout_pack.c index b8efa896f6..e8ad6d7c5b 100644 --- a/src/lib/elementary/elm_layout_pack.c +++ b/src/lib/elementary/elm_layout_pack.c @@ -16,6 +16,8 @@ #include "../evas/canvas/evas_box.eo.h" #include "../evas/canvas/evas_table.eo.h" +#warning TODO: Implement proper lifecycle of proxy objects (single call) + /* layout internals for box & table */ Eina_Bool _elm_layout_box_append(Eo *obj, Elm_Layout_Smart_Data *sd, const char *part, Evas_Object *child); Eina_Bool _elm_layout_box_prepend(Eo *obj, Elm_Layout_Smart_Data *sd, const char *part, Evas_Object *child); @@ -269,7 +271,7 @@ _efl_ui_layout_internal_box_efl_pack_linear_pack_direction_get(Eo *obj EINA_UNUS { ELM_WIDGET_DATA_GET_OR_RETURN(obj, wd, EFL_ORIENT_NONE); - return efl_pack_direction_get(efl_content_get(wd->resize_obj, pd->part)); + return efl_pack_direction_get(efl_content_get(efl_part(wd->resize_obj, pd->part))); } EOLIAN static void diff --git a/src/lib/elementary/elm_mapbuf.c b/src/lib/elementary/elm_mapbuf.c index 22c33e114a..070dfc6cfa 100644 --- a/src/lib/elementary/elm_mapbuf.c +++ b/src/lib/elementary/elm_mapbuf.c @@ -11,6 +11,9 @@ #include "elm_widget_container.h" #include "elm_mapbuf.eo.h" +#include "elm_mapbuf_internal_part.eo.h" +#include "elm_part_helper.h" + #define MY_CLASS ELM_MAPBUF_CLASS #define MY_CLASS_NAME "Elm_Mapbuf" @@ -54,8 +57,8 @@ _changed_size_hints_cb(void *data, } static void -_elm_mapbuf_content_unset(Elm_Mapbuf_Data *sd, Evas_Object *obj, - Evas_Object *content) +_elm_mapbuf_content_unset_internal(Elm_Mapbuf_Data *sd, Evas_Object *obj, + Evas_Object *content) { ELM_WIDGET_DATA_GET_OR_RETURN(obj, wd); @@ -79,7 +82,7 @@ _elm_mapbuf_elm_widget_sub_object_del(Eo *obj, Elm_Mapbuf_Data *sd, Evas_Object if (!int_ret) return EINA_FALSE; if (sobj == sd->content) - _elm_mapbuf_content_unset(sd, (Evas_Object *)obj, sobj); + _elm_mapbuf_content_unset_internal(sd, (Evas_Object *)obj, sobj); return EINA_TRUE; } @@ -190,8 +193,8 @@ _elm_mapbuf_evas_object_smart_hide(Eo *obj, Elm_Mapbuf_Data *sd) _configure(obj); } -EOLIAN static Eina_Bool -_elm_mapbuf_efl_container_content_set(Eo *obj, Elm_Mapbuf_Data *sd, const char *part, Evas_Object *content) +static Eina_Bool +_elm_mapbuf_content_set(Eo *obj, Elm_Mapbuf_Data *sd, const char *part, Evas_Object *content) { ELM_WIDGET_DATA_GET_OR_RETURN(obj, wd, EINA_FALSE); @@ -222,15 +225,15 @@ _elm_mapbuf_efl_container_content_set(Eo *obj, Elm_Mapbuf_Data *sd, const char * return EINA_TRUE; } -EOLIAN static Evas_Object* -_elm_mapbuf_efl_container_content_get(Eo *obj EINA_UNUSED, Elm_Mapbuf_Data *sd, const char *part) +static Evas_Object* +_elm_mapbuf_content_get(Eo *obj EINA_UNUSED, Elm_Mapbuf_Data *sd, const char *part) { if (part && strcmp(part, "default")) return NULL; return sd->content; } -EOLIAN static Evas_Object* -_elm_mapbuf_efl_container_content_unset(Eo *obj, Elm_Mapbuf_Data *sd, const char *part) +static Evas_Object* +_elm_mapbuf_content_unset(Eo *obj, Elm_Mapbuf_Data *sd, const char *part) { Evas_Object *content; if (part && strcmp(part, "default")) return NULL; @@ -238,10 +241,28 @@ _elm_mapbuf_efl_container_content_unset(Eo *obj, Elm_Mapbuf_Data *sd, const char content = sd->content; elm_widget_sub_object_del(obj, content); - _elm_mapbuf_content_unset(sd, obj, content); + _elm_mapbuf_content_unset_internal(sd, obj, content); return content; } +EOLIAN static Eina_Bool +_elm_mapbuf_efl_container_content_set(Eo *obj, Elm_Mapbuf_Data *sd, Evas_Object *content) +{ + return _elm_mapbuf_content_set(obj, sd, NULL, content); +} + +EOLIAN static Evas_Object* +_elm_mapbuf_efl_container_content_get(Eo *obj, Elm_Mapbuf_Data *sd) +{ + return _elm_mapbuf_content_get(obj, sd, NULL); +} + +EOLIAN static Evas_Object* +_elm_mapbuf_efl_container_content_unset(Eo *obj, Elm_Mapbuf_Data *sd) +{ + return _elm_mapbuf_content_unset(obj, sd, NULL); +} + EOLIAN static void _elm_mapbuf_evas_object_smart_del(Eo *obj, Elm_Mapbuf_Data *priv) { @@ -418,4 +439,14 @@ _elm_mapbuf_class_constructor(Eo_Class *klass) evas_smart_legacy_type_register(MY_CLASS_NAME_LEGACY, klass); } +/* Efl.Part begin */ + +ELM_PART_IMPLEMENT(elm_mapbuf, ELM_MAPBUF, Elm_Mapbuf_Data, Elm_Part_Data) +ELM_PART_IMPLEMENT_CONTENT_SET(elm_mapbuf, ELM_MAPBUF, Elm_Mapbuf_Data, Elm_Part_Data) +ELM_PART_IMPLEMENT_CONTENT_GET(elm_mapbuf, ELM_MAPBUF, Elm_Mapbuf_Data, Elm_Part_Data) +ELM_PART_IMPLEMENT_CONTENT_UNSET(elm_mapbuf, ELM_MAPBUF, Elm_Mapbuf_Data, Elm_Part_Data) +#include "elm_mapbuf_internal_part.eo.c" + +/* Efl.Part end */ + #include "elm_mapbuf.eo.c" diff --git a/src/lib/elementary/elm_mapbuf.eo b/src/lib/elementary/elm_mapbuf.eo index 569a31542f..e5c4d95025 100644 --- a/src/lib/elementary/elm_mapbuf.eo +++ b/src/lib/elementary/elm_mapbuf.eo @@ -1,4 +1,4 @@ -class Elm.Mapbuf (Elm.Widget, Efl.Container) +class Elm.Mapbuf (Elm.Widget, Efl.Container, Efl.Part) { legacy_prefix: elm_mapbuf; eo_prefix: elm_private_mapbuf; @@ -140,6 +140,7 @@ class Elm.Mapbuf (Elm.Widget, Efl.Container) Efl.Container.content.get; Efl.Container.content.set; Efl.Container.content_unset; + Efl.Part.part; } } diff --git a/src/lib/elementary/elm_mapbuf_internal_part.eo b/src/lib/elementary/elm_mapbuf_internal_part.eo new file mode 100644 index 0000000000..f7c15d5600 --- /dev/null +++ b/src/lib/elementary/elm_mapbuf_internal_part.eo @@ -0,0 +1,10 @@ +class Elm.Mapbuf.Internal.Part (Eo.Base, Efl.Container) +{ + data: Elm_Part_Data; + implements { + Eo.Base.destructor; + Efl.Container.content.set; + Efl.Container.content.get; + Efl.Container.content_unset; + } +} diff --git a/src/lib/elementary/elm_naviframe.eo b/src/lib/elementary/elm_naviframe.eo index f23e0522ca..fc6f9cd46f 100644 --- a/src/lib/elementary/elm_naviframe.eo +++ b/src/lib/elementary/elm_naviframe.eo @@ -153,14 +153,12 @@ class Elm.Naviframe (Elm.Layout, Elm.Interface.Atspi_Widget_Action) Elm.Widget.translate; Elm.Widget.theme_apply; Elm.Widget.event; - Efl.Container.content.get; - Efl.Container.content.set; - Efl.Container.content_unset; Elm.Layout.text.set; Elm.Layout.text.get; Elm.Layout.signal_emit; Elm.Layout.sizing_eval; Elm.Interface.Atspi_Widget_Action.elm_actions.get; + Efl.Part.part; } events { transition,finished; diff --git a/src/lib/elementary/elm_naviframe_internal_part.eo b/src/lib/elementary/elm_naviframe_internal_part.eo new file mode 100644 index 0000000000..d943ce62d2 --- /dev/null +++ b/src/lib/elementary/elm_naviframe_internal_part.eo @@ -0,0 +1,9 @@ +class Elm.Naviframe.Internal.Part (Elm.Layout.Internal.Part) +{ + data: null; + implements { + Efl.Container.content.set; + Efl.Container.content.get; + Efl.Container.content_unset; + } +} diff --git a/src/lib/elementary/elm_notify.c b/src/lib/elementary/elm_notify.c index 5314210124..28d877e314 100644 --- a/src/lib/elementary/elm_notify.c +++ b/src/lib/elementary/elm_notify.c @@ -11,6 +11,9 @@ #include "elm_widget_notify.h" #include "elm_widget_container.h" +#include "elm_notify_internal_part.eo.h" +#include "elm_part_helper.h" + #define MY_CLASS ELM_NOTIFY_CLASS #define MY_CLASS_NAME "Elm_Notify" @@ -370,8 +373,8 @@ _elm_notify_elm_widget_focus_direction(Eo *obj EINA_UNUSED, Elm_Notify_Data *sd, return elm_widget_focus_direction_get(cur, base, degree, direction, direction_item, weight); } -EOLIAN static Eina_Bool -_elm_notify_efl_container_content_set(Eo *obj, Elm_Notify_Data *sd, const char *part, Evas_Object *content) +static Eina_Bool +_elm_notify_content_set(Eo *obj, Elm_Notify_Data *sd, const char *part, Evas_Object *content) { if (part && strcmp(part, "default")) return EINA_FALSE; if (sd->content == content) return EINA_TRUE; @@ -393,16 +396,16 @@ _elm_notify_efl_container_content_set(Eo *obj, Elm_Notify_Data *sd, const char * return EINA_TRUE; } -EOLIAN static Evas_Object* -_elm_notify_efl_container_content_get(Eo *obj EINA_UNUSED, Elm_Notify_Data *sd, const char *part) +static Evas_Object* +_elm_notify_content_get(Eo *obj EINA_UNUSED, Elm_Notify_Data *sd, const char *part) { if (part && strcmp(part, "default")) return NULL; return sd->content; } -EOLIAN static Evas_Object* -_elm_notify_efl_container_content_unset(Eo *obj, Elm_Notify_Data *sd, const char *part) +static Evas_Object* +_elm_notify_content_unset(Eo *obj, Elm_Notify_Data *sd, const char *part) { Evas_Object *content; @@ -416,6 +419,24 @@ _elm_notify_efl_container_content_unset(Eo *obj, Elm_Notify_Data *sd, const char return content; } +EOLIAN static Eina_Bool +_elm_notify_efl_container_content_set(Eo *obj, Elm_Notify_Data *sd, Evas_Object *content) +{ + return _elm_notify_content_set(obj, sd, NULL, content); +} + +EOLIAN static Evas_Object* +_elm_notify_efl_container_content_get(Eo *obj EINA_UNUSED, Elm_Notify_Data *sd) +{ + return _elm_notify_content_get(obj, sd, NULL); +} + +EOLIAN static Evas_Object* +_elm_notify_efl_container_content_unset(Eo *obj, Elm_Notify_Data *sd) +{ + return _elm_notify_content_unset(obj, sd, NULL); +} + static void _hide_finished_cb(void *data, Evas_Object *obj EINA_UNUSED, @@ -693,4 +714,14 @@ _elm_notify_class_constructor(Eo_Class *klass) evas_smart_legacy_type_register(MY_CLASS_NAME_LEGACY, klass); } +/* Efl.Part begin */ + +ELM_PART_IMPLEMENT(elm_notify, ELM_NOTIFY, Elm_Notify_Data, Elm_Part_Data) +ELM_PART_IMPLEMENT_CONTENT_SET(elm_notify, ELM_NOTIFY, Elm_Notify_Data, Elm_Part_Data) +ELM_PART_IMPLEMENT_CONTENT_GET(elm_notify, ELM_NOTIFY, Elm_Notify_Data, Elm_Part_Data) +ELM_PART_IMPLEMENT_CONTENT_UNSET(elm_notify, ELM_NOTIFY, Elm_Notify_Data, Elm_Part_Data) +#include "elm_notify_internal_part.eo.c" + +/* Efl.Part end */ + #include "elm_notify.eo.c" diff --git a/src/lib/elementary/elm_notify.eo b/src/lib/elementary/elm_notify.eo index b1a3e6c04e..981e2178c4 100644 --- a/src/lib/elementary/elm_notify.eo +++ b/src/lib/elementary/elm_notify.eo @@ -1,4 +1,4 @@ -class Elm.Notify (Elm.Widget, Efl.Container) +class Elm.Notify (Elm.Widget, Efl.Container, Efl.Part) { legacy_prefix: elm_notify; eo_prefix: elm_obj_notify; @@ -97,6 +97,7 @@ class Elm.Notify (Elm.Widget, Efl.Container) Efl.Container.content.get; Efl.Container.content.set; Efl.Container.content_unset; + Efl.Part.part; } events { block,clicked; diff --git a/src/lib/elementary/elm_notify_internal_part.eo b/src/lib/elementary/elm_notify_internal_part.eo new file mode 100644 index 0000000000..686902c740 --- /dev/null +++ b/src/lib/elementary/elm_notify_internal_part.eo @@ -0,0 +1,10 @@ +class Elm.Notify.Internal.Part (Eo.Base, Efl.Container) +{ + data: Elm_Part_Data; + implements { + Eo.Base.destructor; + Efl.Container.content.set; + Efl.Container.content.get; + Efl.Container.content_unset; + } +} diff --git a/src/lib/elementary/elm_panel.c b/src/lib/elementary/elm_panel.c index 3b4dbf1fe0..30197b4c90 100644 --- a/src/lib/elementary/elm_panel.c +++ b/src/lib/elementary/elm_panel.c @@ -12,6 +12,9 @@ #include "els_box.h" +#include "elm_panel_internal_part.eo.h" +#include "elm_part_helper.h" + #define MY_CLASS ELM_PANEL_CLASS #define MY_CLASS_NAME "Elm_Panel" @@ -245,9 +248,8 @@ _elm_panel_elm_widget_theme_apply(Eo *obj, Elm_Panel_Data *sd) elm_coords_finger_size_adjust(1, &minw, 1, &minh); evas_object_size_hint_min_set(sd->event, minw, minh); - if (edje_object_part_exists - (wd->resize_obj, "elm.swallow.event")) - efl_content_set(eo_super(obj, MY_CLASS), "elm.swallow.event", sd->event); + if (edje_object_part_exists(wd->resize_obj, "elm.swallow.event")) + efl_content_set(efl_part(eo_super(obj, MY_CLASS), "elm.swallow.event"), sd->event); } elm_layout_sizing_eval(obj); @@ -909,8 +911,8 @@ _elm_panel_elm_widget_event(Eo *obj, Elm_Panel_Data *_pd EINA_UNUSED, Evas_Objec return EINA_TRUE; } -EOLIAN static Eina_Bool -_elm_panel_efl_container_content_set(Eo *obj, Elm_Panel_Data *sd, const char *part, Evas_Object *content) +static Eina_Bool +_elm_panel_content_set(Eo *obj, Elm_Panel_Data *sd, const char *part, Evas_Object *content) { if (part) { @@ -923,7 +925,7 @@ _elm_panel_efl_container_content_set(Eo *obj, Elm_Panel_Data *sd, const char *pa if (strcmp(part, "default")) { Eina_Bool int_ret = EINA_TRUE; - int_ret = efl_content_set(eo_super(obj, MY_CLASS), part, content); + int_ret = efl_content_set(efl_part(eo_super(obj, MY_CLASS), part), content); return int_ret; } } @@ -945,8 +947,8 @@ _elm_panel_efl_container_content_set(Eo *obj, Elm_Panel_Data *sd, const char *pa return EINA_TRUE; } -EOLIAN static Evas_Object* -_elm_panel_efl_container_content_get(Eo *obj, Elm_Panel_Data *sd, const char *part) +static Evas_Object* +_elm_panel_content_get(Eo *obj, Elm_Panel_Data *sd, const char *part) { if (part) { @@ -959,7 +961,7 @@ _elm_panel_efl_container_content_get(Eo *obj, Elm_Panel_Data *sd, const char *pa if (strcmp(part, "default")) { Evas_Object *ret = NULL; - ret = efl_content_get(eo_super(obj, MY_CLASS), part); + ret = efl_content_get(efl_part(eo_super(obj, MY_CLASS), part)); return ret; } } @@ -967,8 +969,8 @@ _elm_panel_efl_container_content_get(Eo *obj, Elm_Panel_Data *sd, const char *pa return sd->content; } -EOLIAN static Evas_Object* -_elm_panel_efl_container_content_unset(Eo *obj, Elm_Panel_Data *sd, const char *part) +static Evas_Object* +_elm_panel_content_unset(Eo *obj, Elm_Panel_Data *sd, const char *part) { Evas_Object *ret = NULL; @@ -982,7 +984,7 @@ _elm_panel_efl_container_content_unset(Eo *obj, Elm_Panel_Data *sd, const char * } if (strcmp(part, "default")) { - ret = efl_content_unset(eo_super(obj, MY_CLASS), part); + ret = efl_content_unset(efl_part(eo_super(obj, MY_CLASS), part)); return ret; } } @@ -1039,7 +1041,7 @@ _elm_panel_evas_object_smart_add(Eo *obj, Elm_Panel_Data *priv) elm_coords_finger_size_adjust(1, &minw, 1, &minh); evas_object_size_hint_min_set(priv->event, minw, minh); - efl_content_set(eo_super(obj, MY_CLASS), "elm.swallow.event", priv->event); + efl_content_set(efl_part(eo_super(obj, MY_CLASS), "elm.swallow.event"), priv->event); } } @@ -1524,4 +1526,14 @@ _elm_panel_elm_interface_atspi_widget_action_elm_actions_get(Eo *obj EINA_UNUSED return &atspi_actions[0]; } +/* Efl.Part begin */ + +ELM_PART_IMPLEMENT(elm_panel, ELM_PANEL, Elm_Panel_Data, Elm_Part_Data) +ELM_PART_IMPLEMENT_CONTENT_SET(elm_panel, ELM_PANEL, Elm_Panel_Data, Elm_Part_Data) +ELM_PART_IMPLEMENT_CONTENT_GET(elm_panel, ELM_PANEL, Elm_Panel_Data, Elm_Part_Data) +ELM_PART_IMPLEMENT_CONTENT_UNSET(elm_panel, ELM_PANEL, Elm_Panel_Data, Elm_Part_Data) +#include "elm_panel_internal_part.eo.c" + +/* Efl.Part end */ + #include "elm_panel.eo.c" diff --git a/src/lib/elementary/elm_panel.eo b/src/lib/elementary/elm_panel.eo index d4f5524257..27f118b0be 100644 --- a/src/lib/elementary/elm_panel.eo +++ b/src/lib/elementary/elm_panel.eo @@ -80,10 +80,8 @@ class Elm.Panel (Elm.Layout, Elm.Interface_Scrollable, Elm.Widget.access; Elm.Widget.event; Elm.Widget.on_focus_region; - Efl.Container.content.get; - Efl.Container.content_unset; - Efl.Container.content.set; Elm.Layout.sizing_eval; Elm.Interface.Atspi_Widget_Action.elm_actions.get; + Efl.Part.part; } } diff --git a/src/lib/elementary/elm_panel_internal_part.eo b/src/lib/elementary/elm_panel_internal_part.eo new file mode 100644 index 0000000000..1736399c61 --- /dev/null +++ b/src/lib/elementary/elm_panel_internal_part.eo @@ -0,0 +1,10 @@ +class Elm.Panel.Internal.Part (Eo.Base, Efl.Container) +{ + data: Elm_Part_Data; + implements { + Eo.Base.destructor; + Efl.Container.content.set; + Efl.Container.content.get; + Efl.Container.content_unset; + } +} diff --git a/src/lib/elementary/elm_part_helper.h b/src/lib/elementary/elm_part_helper.h new file mode 100644 index 0000000000..d1593d9a7e --- /dev/null +++ b/src/lib/elementary/elm_part_helper.h @@ -0,0 +1,120 @@ +#ifndef _ELM_PART_HELPER_H +#define _ELM_PART_HELPER_H + +#include "elm_layout_internal_part.eo.h" + +#define ELM_PART_REF(obj, pd) do { if (!(pd->temp++)) eo_ref(obj); } while(0) +#define ELM_PART_UNREF(obj, pd) do { if (pd->temp) { if (!(--pd->temp)) eo_unref(obj); } } while(0) +#define ELM_PART_RETURN_VAL(a) do { typeof(a) _ret = a; ELM_PART_UNREF(obj, pd); return _ret; } while(0) +#define ELM_PART_RETURN_VOID do { ELM_PART_UNREF(obj, pd); return; } while(0) +#define ELM_PART_CALL(a) ({ ELM_PART_REF(obj, pd); a; }) + +typedef struct _Elm_Part_Data Elm_Part_Data; +struct _Elm_Part_Data +{ + Eo *obj; + void *sd; + char *part; + unsigned char temp; +}; + +// Note: this generic implementation can be improved to support part object +// caching or something... + +// Main part proxy implementation +#define ELM_PART_IMPLEMENT(type, TYPE, typedata, partdata) \ +\ +static EOLIAN void \ +_ ## type ## _internal_part_eo_base_destructor(Eo *obj, partdata *pd) \ +{ \ + free(pd->part); \ + eo_data_xunref(pd->obj, pd->sd, obj); \ + eo_destructor(eo_super(obj, TYPE ## _INTERNAL_PART_CLASS)); \ +} \ +\ +static EOLIAN Eo_Base * \ +_ ## type ## _efl_part_part(const Eo *obj, typedata *priv EINA_UNUSED, const char *part) \ +{ \ + partdata *pd; \ + Eo *proxy; \ +\ + proxy = eo_add(TYPE ## _INTERNAL_PART_CLASS, (Eo *) obj); \ + pd = eo_data_scope_get(proxy, TYPE ## _INTERNAL_PART_CLASS); \ + if (pd) \ + { \ + pd->obj = (Eo *) obj; \ + pd->sd = eo_data_xref(pd->obj, TYPE ## _CLASS, proxy); \ + pd->part = part ? strdup(part) : NULL; \ + pd->temp = 1; \ + } \ +\ + return proxy; \ +} + +#define ELM_PART_IMPLEMENT_CONTENT_SET(type, TYPE, typedata, partdata) \ +static EOLIAN Eina_Bool \ +_ ## type ## _internal_part_efl_container_content_set(Eo *obj, partdata *pd, Efl_Gfx *content) \ +{ \ + ELM_PART_RETURN_VAL(_ ## type ## _content_set(pd->obj, pd->sd, pd->part, content)); \ +} + +#define ELM_PART_IMPLEMENT_CONTENT_GET(type, TYPE, typedata, partdata) \ +static EOLIAN Efl_Gfx * \ +_ ## type ## _internal_part_efl_container_content_get(Eo *obj, partdata *pd) \ +{ \ + ELM_PART_RETURN_VAL(_ ## type ## _content_get(pd->obj, pd->sd, pd->part)); \ +} + +#define ELM_PART_IMPLEMENT_CONTENT_UNSET(type, TYPE, typedata, partdata) \ +static EOLIAN Efl_Gfx * \ +_ ## type ## _internal_part_efl_container_content_unset(Eo *obj, partdata *pd) \ +{ \ + ELM_PART_RETURN_VAL(_ ## type ## _content_unset(pd->obj, pd->sd, pd->part)); \ +} + +// For widgets that inherit from something with parts (eg. from Elm.Layout) +#define ELM_PART_OVERRIDE(type, TYPE, SUPER, typedata, partdata) \ +static EOLIAN Eo_Base * \ +_ ## type ## _efl_part_part(const Eo *obj, typedata *priv EINA_UNUSED, const char *part) \ +{ \ + partdata *pd; \ + Eo *proxy; \ +\ + proxy = eo_add(TYPE ## _INTERNAL_PART_CLASS, (Eo *) obj); \ + pd = eo_data_scope_get(proxy, SUPER ## _INTERNAL_PART_CLASS); \ + if (pd) \ + { \ + pd->obj = (Eo *) obj; \ + pd->sd = eo_data_xref(pd->obj, SUPER ## _CLASS, proxy); \ + pd->part = part ? strdup(part) : NULL; \ + pd->temp = 1; \ + } \ +\ + return proxy; \ +} + +#define ELM_PART_OVERRIDE_CONTENT_SET(type, TYPE, SUPER, typedata, partdata) \ +static EOLIAN Eina_Bool \ +_ ## type ## _internal_part_efl_container_content_set(Eo *obj, void *_pd EINA_UNUSED, Efl_Gfx *content) \ +{ \ + partdata *pd = eo_data_scope_get(obj, SUPER ## _INTERNAL_PART_CLASS); \ + ELM_PART_RETURN_VAL(_ ## type ## _content_set(pd->obj, pd->sd, pd->part, content)); \ +} + +#define ELM_PART_OVERRIDE_CONTENT_GET(type, TYPE, SUPER, typedata, partdata) \ +static EOLIAN Efl_Gfx * \ +_ ## type ## _internal_part_efl_container_content_get(Eo *obj, void *_pd EINA_UNUSED) \ +{ \ + partdata *pd = eo_data_scope_get(obj, SUPER ## _INTERNAL_PART_CLASS); \ + ELM_PART_RETURN_VAL(_ ## type ## _content_get(pd->obj, pd->sd, pd->part)); \ +} + +#define ELM_PART_OVERRIDE_CONTENT_UNSET(type, TYPE, SUPER, typedata, partdata) \ +static EOLIAN Efl_Gfx * \ +_ ## type ## _internal_part_efl_container_content_unset(Eo *obj, void *_pd EINA_UNUSED) \ +{ \ + partdata *pd = eo_data_scope_get(obj, SUPER ## _INTERNAL_PART_CLASS); \ + ELM_PART_RETURN_VAL(_ ## type ## _content_unset(pd->obj, pd->sd, pd->part)); \ +} + +#endif diff --git a/src/lib/elementary/elm_player.eo b/src/lib/elementary/elm_player.eo index e218b0923a..c8381abfab 100644 --- a/src/lib/elementary/elm_player.eo +++ b/src/lib/elementary/elm_player.eo @@ -10,9 +10,9 @@ class Elm.Player (Elm.Layout, Elm.Interface.Atspi_Widget_Action) Evas.Object.Smart.del; Elm.Widget.theme_apply; Elm.Widget.event; - Efl.Container.content.set; Elm.Layout.sizing_eval; Elm.Interface.Atspi_Widget_Action.elm_actions.get; + Efl.Part.part; } events { forward,clicked; diff --git a/src/lib/elementary/elm_player_internal_part.eo b/src/lib/elementary/elm_player_internal_part.eo new file mode 100644 index 0000000000..86dceaa057 --- /dev/null +++ b/src/lib/elementary/elm_player_internal_part.eo @@ -0,0 +1,7 @@ +class Elm.Player.Internal.Part (Elm.Layout.Internal.Part) +{ + data: null; + implements { + Efl.Container.content.set; + } +} diff --git a/src/lib/elementary/elm_popup.eo b/src/lib/elementary/elm_popup.eo index 58c7f5a0e6..535724853a 100644 --- a/src/lib/elementary/elm_popup.eo +++ b/src/lib/elementary/elm_popup.eo @@ -179,15 +179,13 @@ class Elm.Popup (Elm.Layout, Elm.Interface.Atspi_Widget_Action) Elm.Widget.translate; Elm.Widget.sub_object_del; Elm.Widget.event; - Efl.Container.content.get; - Efl.Container.content.set; - Efl.Container.content_unset; Elm.Layout.text.set; Elm.Layout.text.get; Elm.Layout.sizing_eval; Elm.Layout.signal_emit; Elm.Interface.Atspi_Widget_Action.elm_actions.get; Elm.Interface.Atspi_Accessible.state_set.get; + Efl.Part.part; } events { block,clicked; diff --git a/src/lib/elementary/elm_popup_internal_part.eo b/src/lib/elementary/elm_popup_internal_part.eo new file mode 100644 index 0000000000..3343746bec --- /dev/null +++ b/src/lib/elementary/elm_popup_internal_part.eo @@ -0,0 +1,9 @@ +class Elm.Popup.Internal.Part (Elm.Layout.Internal.Part) +{ + data: null; + implements { + Efl.Container.content.set; + Efl.Container.content.get; + Efl.Container.content_unset; + } +} diff --git a/src/lib/elementary/elm_progressbar.c b/src/lib/elementary/elm_progressbar.c index 3e2256bc1d..42e9668dc7 100644 --- a/src/lib/elementary/elm_progressbar.c +++ b/src/lib/elementary/elm_progressbar.c @@ -11,6 +11,9 @@ #include "elm_widget_progressbar.h" #include "elm_widget_layout.h" +#include "elm_progressbar_internal_part.eo.h" +#include "elm_part_helper.h" + #define MY_CLASS ELM_PROGRESSBAR_CLASS #define MY_CLASS_NAME "Elm_Progressbar" @@ -174,11 +177,11 @@ _elm_progressbar_elm_widget_sub_object_del(Eo *obj, Elm_Progressbar_Data *_pd EI /* FIXME: replicated from elm_layout just because progressbar's icon * spot is elm.swallow.content, not elm.swallow.icon. Fix that * whenever we can changed the theme API */ -EOLIAN static Eina_Bool -_elm_progressbar_efl_container_content_set(Eo *obj, Elm_Progressbar_Data *_pd EINA_UNUSED, const char *part, Evas_Object *content) +static Eina_Bool +_elm_progressbar_content_set(Eo *obj, Elm_Progressbar_Data *_pd EINA_UNUSED, const char *part, Evas_Object *content) { Eina_Bool int_ret = EINA_FALSE; - int_ret = efl_content_set(eo_super(obj, MY_CLASS), part, content); + int_ret = efl_content_set(efl_part(eo_super(obj, MY_CLASS), part), content); if (!int_ret) return EINA_FALSE; _icon_signal_emit(obj); @@ -649,4 +652,12 @@ _elm_progressbar_class_constructor(Eo_Class *klass) evas_smart_legacy_type_register(MY_CLASS_NAME_LEGACY, klass); } +/* Efl.Part begin */ + +ELM_PART_OVERRIDE(elm_progressbar, ELM_PROGRESSBAR, ELM_LAYOUT, Elm_Progressbar_Data, Elm_Part_Data) +ELM_PART_OVERRIDE_CONTENT_SET(elm_progressbar, ELM_PROGRESSBAR, ELM_LAYOUT, Elm_Progressbar_Data, Elm_Part_Data) +#include "elm_progressbar_internal_part.eo.c" + +/* Efl.Part end */ + #include "elm_progressbar.eo.c" diff --git a/src/lib/elementary/elm_progressbar.eo b/src/lib/elementary/elm_progressbar.eo index 754a86b959..13cc072e79 100644 --- a/src/lib/elementary/elm_progressbar.eo +++ b/src/lib/elementary/elm_progressbar.eo @@ -63,7 +63,6 @@ class Elm.Progressbar (Elm.Layout, Efl.Ui.Progress, Elm.Widget.focus_next_manager_is; Elm.Widget.focus_direction_manager_is; Elm.Widget.sub_object_del; - Efl.Container.content.set; Elm.Layout.text_aliases.get; Elm.Layout.content_aliases.get; Elm.Layout.sizing_eval; @@ -71,6 +70,7 @@ class Elm.Progressbar (Elm.Layout, Efl.Ui.Progress, Efl.Ui.Progress.progress_value; Efl.Ui.Progress.unit_format; Efl.Orientation.orientation; + Efl.Part.part; } events { changed; diff --git a/src/lib/elementary/elm_progressbar_internal_part.eo b/src/lib/elementary/elm_progressbar_internal_part.eo new file mode 100644 index 0000000000..75113f1b47 --- /dev/null +++ b/src/lib/elementary/elm_progressbar_internal_part.eo @@ -0,0 +1,7 @@ +class Elm.Progressbar.Internal.Part (Elm.Layout.Internal.Part) +{ + data: null; + implements { + Efl.Container.content.set; + } +} diff --git a/src/lib/elementary/elm_scroller.c b/src/lib/elementary/elm_scroller.c index b3a8ada4dd..27f710dd6e 100644 --- a/src/lib/elementary/elm_scroller.c +++ b/src/lib/elementary/elm_scroller.c @@ -12,6 +12,9 @@ #include "elm_widget_layout.h" #include "elm_widget_scroller.h" +#include "elm_scroller_internal_part.eo.h" +#include "elm_part_helper.h" + #define MY_CLASS ELM_SCROLLER_CLASS #define MY_CLASS_NAME "Elm_Scroller" @@ -757,14 +760,12 @@ _loop_content_set(Evas_Object *obj, Elm_Scroller_Data *sd, Evas_Object *content) } } -EOLIAN static Eina_Bool -_elm_scroller_efl_container_content_set(Eo *obj, Elm_Scroller_Data *sd, const char *part, Evas_Object *content) +static Eina_Bool +_elm_scroller_content_set(Eo *obj, Elm_Scroller_Data *sd, const char *part, Evas_Object *content) { if (part && strcmp(part, "default")) { - Eina_Bool int_ret = EINA_FALSE; - int_ret = efl_content_set(eo_super(obj, MY_CLASS), part, content); - return int_ret; + return efl_content_set(efl_part(eo_super(obj, MY_CLASS), part), content); } if (sd->content == content) return EINA_TRUE; @@ -802,27 +803,24 @@ _elm_scroller_efl_container_content_set(Eo *obj, Elm_Scroller_Data *sd, const ch return EINA_TRUE; } -EOLIAN static Evas_Object* -_elm_scroller_efl_container_content_get(Eo *obj, Elm_Scroller_Data *sd, const char *part) +static Evas_Object* +_elm_scroller_content_get(Eo *obj, Elm_Scroller_Data *sd, const char *part) { if (part && strcmp(part, "default")) { - Evas_Object *ret = NULL; - ret = efl_content_get(eo_super(obj, MY_CLASS), part); - return ret; + return efl_content_get(efl_part(eo_super(obj, MY_CLASS), part)); } return sd->content; } -EOLIAN static Evas_Object* -_elm_scroller_efl_container_content_unset(Eo *obj, Elm_Scroller_Data *sd, const char *part) +static Evas_Object* +_elm_scroller_content_unset(Eo *obj, Elm_Scroller_Data *sd, const char *part) { Evas_Object *ret = NULL; if (part && strcmp(part, "default")) { - ret = efl_content_unset(eo_super(obj, MY_CLASS), part); - return ret; + return efl_content_unset(efl_part(eo_super(obj, MY_CLASS), part)); } if (!sd->content) return NULL; @@ -1414,4 +1412,23 @@ _elm_scroller_elm_interface_atspi_widget_action_elm_actions_get(Eo *obj EINA_UNU return &atspi_actions[0]; } +/* Efl.Part begin */ + +/* FIXME: Should be OVERRIDE, but... it doesn't work (buggy scrollers in + * elm_test). Why? No idea! */ +#if 0 +ELM_PART_OVERRIDE(elm_scroller, ELM_SCROLLER, ELM_LAYOUT, Elm_Scroller_Data, Elm_Part_Data) +ELM_PART_OVERRIDE_CONTENT_SET(elm_scroller, ELM_SCROLLER, ELM_LAYOUT, Elm_Scroller_Data, Elm_Part_Data) +ELM_PART_OVERRIDE_CONTENT_GET(elm_scroller, ELM_SCROLLER, ELM_LAYOUT, Elm_Scroller_Data, Elm_Part_Data) +ELM_PART_OVERRIDE_CONTENT_UNSET(elm_scroller, ELM_SCROLLER, ELM_LAYOUT, Elm_Scroller_Data, Elm_Part_Data) +#else +ELM_PART_IMPLEMENT(elm_scroller, ELM_SCROLLER, Elm_Scroller_Data, Elm_Part_Data) +ELM_PART_IMPLEMENT_CONTENT_SET(elm_scroller, ELM_SCROLLER, Elm_Scroller_Data, Elm_Part_Data) +ELM_PART_IMPLEMENT_CONTENT_GET(elm_scroller, ELM_SCROLLER, Elm_Scroller_Data, Elm_Part_Data) +ELM_PART_IMPLEMENT_CONTENT_UNSET(elm_scroller, ELM_SCROLLER, Elm_Scroller_Data, Elm_Part_Data) +#endif +#include "elm_scroller_internal_part.eo.c" + +/* Efl.Part end */ + #include "elm_scroller.eo.c" diff --git a/src/lib/elementary/elm_scroller.eo b/src/lib/elementary/elm_scroller.eo index 5afed725e4..2a93d6ca75 100644 --- a/src/lib/elementary/elm_scroller.eo +++ b/src/lib/elementary/elm_scroller.eo @@ -72,14 +72,12 @@ class Elm.Scroller (Elm.Layout, Elm.Interface_Scrollable, Elm.Widget.focus_direction; Elm.Widget.sub_object_del; Elm.Widget.event; - Efl.Container.content.get; - Efl.Container.content.set; - Efl.Container.content_unset; Elm.Layout.sizing_eval; Elm.Interface_Scrollable.page_size.set; Elm.Interface_Scrollable.policy.set; Elm.Interface_Scrollable.single_direction; Elm.Interface.Atspi_Widget_Action.elm_actions.get; + Efl.Part.part; } events { scroll,page,changed; diff --git a/src/lib/elementary/elm_scroller_internal_part.eo b/src/lib/elementary/elm_scroller_internal_part.eo new file mode 100644 index 0000000000..52604360d4 --- /dev/null +++ b/src/lib/elementary/elm_scroller_internal_part.eo @@ -0,0 +1,10 @@ +class Elm.Scroller.Internal.Part (Eo.Base, Efl.Container) // FIXME: (Elm.Layout.Internal.Part) +{ + data: Elm_Part_Data; // FIXME: null; + implements { + Eo.Base.destructor; // FIXME: remove + Efl.Container.content.set; + Efl.Container.content.get; + Efl.Container.content_unset; + } +} diff --git a/src/lib/elementary/elm_toolbar.c b/src/lib/elementary/elm_toolbar.c index 05b08898e2..b179cb71b8 100644 --- a/src/lib/elementary/elm_toolbar.c +++ b/src/lib/elementary/elm_toolbar.c @@ -1713,7 +1713,7 @@ _elm_toolbar_item_elm_widget_item_part_content_set(Eo *eo_item EINA_UNUSED, Elm_ if (part && strcmp(part, "object") && strcmp(part, "elm.swallow.object")) { - efl_content_set(VIEW(item), part, content); + efl_content_set(efl_part(VIEW(item), part), content); return; } if (item->object == content) return; @@ -1732,13 +1732,9 @@ EOLIAN static Evas_Object * _elm_toolbar_item_elm_widget_item_part_content_get(Eo *eo_it EINA_UNUSED, Elm_Toolbar_Item_Data *it, const char *part) { - Evas_Object *content; - if (part && strcmp(part, "object") && strcmp(part, "elm.swallow.object")) { - content = efl_content_get(VIEW(it), part); - if (content) return content; - else return NULL; + return efl_content_get(efl_part(VIEW(it), part)); } return it->object; } @@ -1755,8 +1751,7 @@ _elm_toolbar_item_elm_widget_item_part_content_unset(Eo *eo_item EINA_UNUSED, El if (part && strcmp(part, "object") && strcmp(part, "elm.swallow.object")) { - o = efl_content_unset(VIEW(item), part); - return o; + return efl_content_unset(efl_part(VIEW(item), part)); } elm_layout_content_unset(VIEW(item), "elm.swallow.object"); diff --git a/src/lib/elementary/elm_widget.c b/src/lib/elementary/elm_widget.c index e9fc81cf98..73f59745fb 100644 --- a/src/lib/elementary/elm_widget.c +++ b/src/lib/elementary/elm_widget.c @@ -3657,7 +3657,7 @@ elm_widget_content_part_set(Evas_Object *obj, Evas_Object *content) { ELM_WIDGET_CHECK(obj); - efl_content_set(obj, part, content); + efl_content_set(efl_part(obj, part), content); } EAPI Evas_Object * @@ -3665,9 +3665,7 @@ elm_widget_content_part_get(const Evas_Object *obj, const char *part) { ELM_WIDGET_CHECK(obj) NULL; - Evas_Object *ret = NULL; - ret = efl_content_get((Eo *) obj, part); - return ret; + return efl_content_get(efl_part(obj, part)); } EAPI Evas_Object * @@ -3675,9 +3673,7 @@ elm_widget_content_part_unset(Evas_Object *obj, const char *part) { ELM_WIDGET_CHECK(obj) NULL; - Evas_Object *ret = NULL; - ret = efl_content_unset(obj, part); - return ret; + return efl_content_unset(efl_part(obj, part)); } EOLIAN static void diff --git a/src/tests/edje/edje_test_edje.c b/src/tests/edje/edje_test_edje.c index 97d395461a..2b2b47a594 100644 --- a/src/tests/edje/edje_test_edje.c +++ b/src/tests/edje/edje_test_edje.c @@ -393,17 +393,17 @@ START_TEST(edje_test_swallows_eoapi) o1 = eo_add(EDJE_OBJECT_CLASS, ly); - fail_if(!efl_content_set(ly, "swallow", o1)); + fail_if(!efl_content_set(efl_part(ly, "swallow"), o1)); ck_assert_ptr_eq(eo_parent_get(o1), ly); efl_content_remove(ly, o1); ck_assert_ptr_eq(eo_parent_get(o1), evas_common_evas_get(o1)); - fail_if(!efl_content_set(ly, "swallow", o1)); + fail_if(!efl_content_set(efl_part(ly, "swallow"), o1)); ck_assert_ptr_eq(eo_parent_get(o1), ly); o2 = eo_add(EDJE_OBJECT_CLASS, ly); - fail_if(!efl_content_set(ly, "swallow", o2)); + fail_if(!efl_content_set(efl_part(ly, "swallow"), o2)); ck_assert_ptr_eq(eo_parent_get(o2), ly); /* o1 is deleted at this point. */ ck_assert_ptr_eq(eo_parent_get(o1), evas_common_evas_get(o1)); diff --git a/src/tests/elementary/elm_test_layout.c b/src/tests/elementary/elm_test_layout.c index 6a9e4a3bb2..7c0ba94e33 100644 --- a/src/tests/elementary/elm_test_layout.c +++ b/src/tests/elementary/elm_test_layout.c @@ -38,17 +38,17 @@ START_TEST(elm_layout_swallows) evas_object_show(ly); bt = eo_add(ELM_BUTTON_CLASS, ly); - fail_if(!efl_content_set(ly, "element1", bt)); + fail_if(!efl_content_set(efl_part(ly, "element1"), bt)); ck_assert_ptr_eq(eo_parent_get(bt), ly); - bt = efl_content_unset(ly, "element1"); + bt = efl_content_unset(efl_part(ly, "element1")); ck_assert_ptr_eq(eo_parent_get(bt), evas_common_evas_get(bt)); - fail_if(!efl_content_set(ly, "element1", bt)); + fail_if(!efl_content_set(efl_part(ly, "element1"), bt)); ck_assert_ptr_eq(eo_parent_get(bt), ly); bt2 = eo_add(ELM_BUTTON_CLASS, ly); - fail_if(!efl_content_set(ly, "element1", bt2)); + fail_if(!efl_content_set(efl_part(ly, "element1"), bt2)); ck_assert_ptr_eq(eo_parent_get(bt2), ly); /* bt is deleted at this point. */ ck_assert_ptr_eq(eo_parent_get(bt), evas_common_evas_get(bt));