From 0339ad7740b169683990aa8ce0dbf7c9489ab505 Mon Sep 17 00:00:00 2001 From: Jean-Philippe Andre Date: Tue, 19 Sep 2017 20:02:26 +0900 Subject: [PATCH] elm: Move base implementation for efl_part in widget This means that ALL part handles inherit from the base part class Efl.Ui.Widget.Part. Layout is the only exception where Efl.Part is specially overridden. This is a first step towards generic part APIs, including background in all widgets. --- src/Makefile_Elementary.am | 1 + src/lib/elementary/Elementary.h | 1 + src/lib/elementary/efl_ui_button.c | 4 +- src/lib/elementary/efl_ui_flip.c | 8 +- src/lib/elementary/efl_ui_flip_part.eo | 5 +- src/lib/elementary/efl_ui_layout.c | 66 +++++---- src/lib/elementary/efl_ui_layout_pack.c | 3 +- src/lib/elementary/efl_ui_layout_part.eo | 5 +- src/lib/elementary/efl_ui_panes.c | 18 +-- src/lib/elementary/efl_ui_panes_part.eo | 2 +- src/lib/elementary/efl_ui_progressbar.c | 14 +- src/lib/elementary/efl_ui_progressbar_part.eo | 2 +- src/lib/elementary/efl_ui_slider.c | 14 +- src/lib/elementary/efl_ui_slider_part.eo | 2 +- src/lib/elementary/efl_ui_text.c | 6 +- src/lib/elementary/efl_ui_textpath.c | 6 +- src/lib/elementary/efl_ui_widget_part.eo | 9 ++ src/lib/elementary/efl_ui_win.c | 81 ++++++----- src/lib/elementary/efl_ui_win_part.eo | 5 +- src/lib/elementary/elc_ctxpopup.c | 8 +- src/lib/elementary/elc_fileselector.c | 4 +- src/lib/elementary/elc_fileselector_entry.c | 12 +- src/lib/elementary/elc_multibuttonentry.c | 6 +- src/lib/elementary/elc_naviframe.c | 12 +- src/lib/elementary/elc_player.c | 4 +- src/lib/elementary/elc_popup.c | 12 +- src/lib/elementary/elm_actionslider.c | 6 +- src/lib/elementary/elm_bubble.c | 4 +- src/lib/elementary/elm_dayselector.c | 6 +- src/lib/elementary/elm_entry.c | 10 +- src/lib/elementary/elm_flip_part.eo | 2 +- src/lib/elementary/elm_hover.c | 8 +- src/lib/elementary/elm_label.c | 4 +- src/lib/elementary/elm_mapbuf.c | 8 +- src/lib/elementary/elm_mapbuf_part.eo | 5 +- src/lib/elementary/elm_notify.c | 12 +- src/lib/elementary/elm_notify_part.eo | 5 +- src/lib/elementary/elm_panel.c | 8 +- src/lib/elementary/elm_panel_part.eo | 5 +- src/lib/elementary/elm_part_helper.h | 129 +++++------------- src/lib/elementary/elm_scroller.c | 8 +- src/lib/elementary/elm_widget.c | 36 +++++ src/lib/elementary/elm_widget.eo | 3 +- 43 files changed, 276 insertions(+), 293 deletions(-) create mode 100644 src/lib/elementary/efl_ui_widget_part.eo diff --git a/src/Makefile_Elementary.am b/src/Makefile_Elementary.am index a7f28742dd..f740538504 100644 --- a/src/Makefile_Elementary.am +++ b/src/Makefile_Elementary.am @@ -74,6 +74,7 @@ elm_public_eolian_files = \ lib/elementary/elm_view_form.eo \ lib/elementary/elm_web.eo \ lib/elementary/elm_widget.eo \ + lib/elementary/efl_ui_widget_part.eo \ lib/elementary/efl_ui_win.eo \ lib/elementary/efl_ui_win_inlined.eo \ lib/elementary/efl_ui_win_socket.eo \ diff --git a/src/lib/elementary/Elementary.h b/src/lib/elementary/Elementary.h index 61c7c9351f..6a7e3c83e4 100644 --- a/src/lib/elementary/Elementary.h +++ b/src/lib/elementary/Elementary.h @@ -264,6 +264,7 @@ EAPI extern Elm_Version *elm_version; #ifdef EFL_EO_API_SUPPORT # include +# include # include # include # include diff --git a/src/lib/elementary/efl_ui_button.c b/src/lib/elementary/efl_ui_button.c index 81b04e889c..d7322be42a 100644 --- a/src/lib/elementary/efl_ui_button.c +++ b/src/lib/elementary/efl_ui_button.c @@ -424,8 +424,8 @@ EFL_TEXT_PART_DEFAULT_IMPLEMENT(efl_ui_button, Efl_Ui_Button_Data) /* Efl.Part begin */ -ELM_PART_OVERRIDE(efl_ui_button, EFL_UI_BUTTON, EFL_UI_LAYOUT, Efl_Ui_Button_Data, Elm_Part_Data) -ELM_PART_OVERRIDE_CONTENT_SET(efl_ui_button, EFL_UI_BUTTON, EFL_UI_LAYOUT, Efl_Ui_Button_Data, Elm_Part_Data) +ELM_PART_OVERRIDE(efl_ui_button, EFL_UI_BUTTON, Efl_Ui_Button_Data) +ELM_PART_OVERRIDE_CONTENT_SET(efl_ui_button, EFL_UI_BUTTON, Efl_Ui_Button_Data) #include "efl_ui_button_part.eo.c" /* Efl.Part end */ diff --git a/src/lib/elementary/efl_ui_flip.c b/src/lib/elementary/efl_ui_flip.c index 0f1b18eec2..a87e565c70 100644 --- a/src/lib/elementary/efl_ui_flip.c +++ b/src/lib/elementary/efl_ui_flip.c @@ -2398,10 +2398,10 @@ elm_flip_interaction_direction_enabled_get(Efl_Ui_Flip *obj, Elm_Flip_Direction /* Efl.Part begin */ -ELM_PART_IMPLEMENT(efl_ui_flip, EFL_UI_FLIP, Efl_Ui_Flip_Data, Elm_Part_Data) -ELM_PART_IMPLEMENT_CONTENT_SET(efl_ui_flip, EFL_UI_FLIP, Efl_Ui_Flip_Data, Elm_Part_Data) -ELM_PART_IMPLEMENT_CONTENT_GET(efl_ui_flip, EFL_UI_FLIP, Efl_Ui_Flip_Data, Elm_Part_Data) -ELM_PART_IMPLEMENT_CONTENT_UNSET(efl_ui_flip, EFL_UI_FLIP, Efl_Ui_Flip_Data, Elm_Part_Data) +ELM_PART_OVERRIDE(efl_ui_flip, EFL_UI_FLIP, Efl_Ui_Flip_Data) +ELM_PART_OVERRIDE_CONTENT_SET(efl_ui_flip, EFL_UI_FLIP, Efl_Ui_Flip_Data) +ELM_PART_OVERRIDE_CONTENT_GET(efl_ui_flip, EFL_UI_FLIP, Efl_Ui_Flip_Data) +ELM_PART_OVERRIDE_CONTENT_UNSET(efl_ui_flip, EFL_UI_FLIP, Efl_Ui_Flip_Data) ELM_PART_CONTENT_DEFAULT_SET(efl_ui_flip, "front") #include "efl_ui_flip_part.eo.c" diff --git a/src/lib/elementary/efl_ui_flip_part.eo b/src/lib/elementary/efl_ui_flip_part.eo index 2edd41157a..7bec0b5c1d 100644 --- a/src/lib/elementary/efl_ui_flip_part.eo +++ b/src/lib/elementary/efl_ui_flip_part.eo @@ -1,9 +1,8 @@ -class Efl.Ui.Flip.Part (Efl.Object, Efl.Container) +class Efl.Ui.Flip.Part (Efl.Ui.Widget.Part, Efl.Container) { [[Efl UI flip internal class]] - data: Elm_Part_Data; + data: null; implements { - Efl.Object.destructor; Efl.Container.content { get; set; } Efl.Container.content_unset; } diff --git a/src/lib/elementary/efl_ui_layout.c b/src/lib/elementary/efl_ui_layout.c index 9dc63b3aab..05a6e890c8 100644 --- a/src/lib/elementary/efl_ui_layout.c +++ b/src/lib/elementary/efl_ui_layout.c @@ -2474,13 +2474,11 @@ elm_layout_theme_set(Evas_Object *obj, const char *klass, const char *group, con /* Efl.Part implementation */ -static EOLIAN Efl_Object * +EOLIAN static Eo * _efl_ui_layout_efl_part_part(const Eo *obj, Efl_Ui_Layout_Data *sd EINA_UNUSED, - const char *part) + const char *part) { Edje_Part_Type type; - Elm_Part_Data *pd; - Eo *proxy; EINA_SAFETY_ON_NULL_RETURN_VAL(part, NULL); ELM_WIDGET_DATA_GET_OR_RETURN((Eo *) obj, wd, NULL); @@ -2491,18 +2489,7 @@ _efl_ui_layout_efl_part_part(const Eo *obj, Efl_Ui_Layout_Data *sd EINA_UNUSED, if ((type == EDJE_PART_TYPE_BOX) || (type == EDJE_PART_TYPE_TABLE)) return _efl_ui_layout_pack_proxy_get((Eo *) obj, type, part); - // Generic parts (text, anything, ...) - proxy = efl_add(EFL_UI_LAYOUT_PART_CLASS, (Eo *) obj); - pd = efl_data_scope_get(proxy, EFL_UI_LAYOUT_PART_CLASS); - if (pd) - { - pd->obj = (Eo *) obj; - pd->sd = efl_data_xref(pd->obj, EFL_UI_LAYOUT_CLASS, proxy); - pd->part = strdup(part); - pd->temp = 1; - } - - return proxy; + ELM_PART_OVERRIDE_IMPLEMENT(EFL_UI_LAYOUT); } static const char * @@ -2524,47 +2511,58 @@ _efl_ui_layout_default_text_part_get(const Eo *obj, Efl_Ui_Layout_Data *sd EINA_ } EOLIAN static Eina_Bool -_efl_ui_layout_part_efl_ui_cursor_cursor_set(Eo *obj, Elm_Part_Data *pd, const char *cursor) +_efl_ui_layout_part_efl_ui_cursor_cursor_set(Eo *obj, void *_pd EINA_UNUSED, const char *cursor) { - ELM_PART_RETURN_VAL(_efl_ui_layout_part_cursor_set(pd->sd, pd->part, cursor)); + Elm_Part_Data *pd = efl_data_scope_get(obj, EFL_UI_WIDGET_PART_CLASS); + Efl_Ui_Layout_Data *sd = efl_data_scope_get(pd->obj, MY_CLASS); + ELM_PART_RETURN_VAL(_efl_ui_layout_part_cursor_set(sd, pd->part, cursor)); } EOLIAN static const char * -_efl_ui_layout_part_efl_ui_cursor_cursor_get(Eo *obj, Elm_Part_Data *pd) +_efl_ui_layout_part_efl_ui_cursor_cursor_get(Eo *obj, void *_pd EINA_UNUSED) { - ELM_PART_RETURN_VAL(_efl_ui_layout_part_cursor_get(pd->sd, pd->part)); + Elm_Part_Data *pd = efl_data_scope_get(obj, EFL_UI_WIDGET_PART_CLASS); + Efl_Ui_Layout_Data *sd = efl_data_scope_get(pd->obj, MY_CLASS); + ELM_PART_RETURN_VAL(_efl_ui_layout_part_cursor_get(sd, pd->part)); } EOLIAN static Eina_Bool -_efl_ui_layout_part_efl_ui_cursor_cursor_style_set(Eo *obj, Elm_Part_Data *pd, const char *style) +_efl_ui_layout_part_efl_ui_cursor_cursor_style_set(Eo *obj, void *_pd EINA_UNUSED, const char *style) { - ELM_PART_RETURN_VAL(_efl_ui_layout_part_cursor_style_set(pd->sd, pd->part, style)); + Elm_Part_Data *pd = efl_data_scope_get(obj, EFL_UI_WIDGET_PART_CLASS); + Efl_Ui_Layout_Data *sd = efl_data_scope_get(pd->obj, MY_CLASS); + ELM_PART_RETURN_VAL(_efl_ui_layout_part_cursor_style_set(sd, pd->part, style)); } EOLIAN static const char * -_efl_ui_layout_part_efl_ui_cursor_cursor_style_get(Eo *obj, Elm_Part_Data *pd) +_efl_ui_layout_part_efl_ui_cursor_cursor_style_get(Eo *obj, void *_pd EINA_UNUSED) { - ELM_PART_RETURN_VAL(_efl_ui_layout_part_cursor_style_get(pd->sd, pd->part)); + Elm_Part_Data *pd = efl_data_scope_get(obj, EFL_UI_WIDGET_PART_CLASS); + Efl_Ui_Layout_Data *sd = efl_data_scope_get(pd->obj, MY_CLASS); + ELM_PART_RETURN_VAL(_efl_ui_layout_part_cursor_style_get(sd, pd->part)); } EOLIAN static Eina_Bool -_efl_ui_layout_part_efl_ui_cursor_cursor_theme_search_enabled_set(Eo *obj, Elm_Part_Data *pd, Eina_Bool allow) +_efl_ui_layout_part_efl_ui_cursor_cursor_theme_search_enabled_set(Eo *obj, void *_pd EINA_UNUSED, Eina_Bool allow) { - ELM_PART_RETURN_VAL(_efl_ui_layout_part_cursor_engine_only_set(pd->sd, pd->part, !allow)); + Elm_Part_Data *pd = efl_data_scope_get(obj, EFL_UI_WIDGET_PART_CLASS); + Efl_Ui_Layout_Data *sd = efl_data_scope_get(pd->obj, MY_CLASS); + ELM_PART_RETURN_VAL(_efl_ui_layout_part_cursor_engine_only_set(sd, pd->part, !allow)); } EOLIAN static Eina_Bool -_efl_ui_layout_part_efl_ui_cursor_cursor_theme_search_enabled_get(Eo *obj, Elm_Part_Data *pd) +_efl_ui_layout_part_efl_ui_cursor_cursor_theme_search_enabled_get(Eo *obj, void *_pd EINA_UNUSED) { - ELM_PART_RETURN_VAL(!_efl_ui_layout_part_cursor_engine_only_get(pd->sd, pd->part)); + Elm_Part_Data *pd = efl_data_scope_get(obj, EFL_UI_WIDGET_PART_CLASS); + Efl_Ui_Layout_Data *sd = efl_data_scope_get(pd->obj, MY_CLASS); + ELM_PART_RETURN_VAL(!_efl_ui_layout_part_cursor_engine_only_get(sd, pd->part)); } -ELM_PART_IMPLEMENT_DESTRUCTOR(efl_ui_layout, EFL_UI_LAYOUT, Efl_Ui_Layout_Data, Elm_Part_Data) -ELM_PART_IMPLEMENT_CONTENT_SET(efl_ui_layout, EFL_UI_LAYOUT, Efl_Ui_Layout_Data, Elm_Part_Data) -ELM_PART_IMPLEMENT_CONTENT_GET(efl_ui_layout, EFL_UI_LAYOUT, Efl_Ui_Layout_Data, Elm_Part_Data) -ELM_PART_IMPLEMENT_CONTENT_UNSET(efl_ui_layout, EFL_UI_LAYOUT, Efl_Ui_Layout_Data, Elm_Part_Data) -ELM_PART_IMPLEMENT_TEXT_SET(efl_ui_layout, EFL_UI_LAYOUT, Efl_Ui_Layout_Data, Elm_Part_Data) -ELM_PART_IMPLEMENT_TEXT_GET(efl_ui_layout, EFL_UI_LAYOUT, Efl_Ui_Layout_Data, Elm_Part_Data) +ELM_PART_OVERRIDE_CONTENT_SET(efl_ui_layout, EFL_UI_LAYOUT, Efl_Ui_Layout_Data) +ELM_PART_OVERRIDE_CONTENT_GET(efl_ui_layout, EFL_UI_LAYOUT, Efl_Ui_Layout_Data) +ELM_PART_OVERRIDE_CONTENT_UNSET(efl_ui_layout, EFL_UI_LAYOUT, Efl_Ui_Layout_Data) +ELM_PART_OVERRIDE_TEXT_SET(efl_ui_layout, EFL_UI_LAYOUT, Efl_Ui_Layout_Data) +ELM_PART_OVERRIDE_TEXT_GET(efl_ui_layout, EFL_UI_LAYOUT, Efl_Ui_Layout_Data) #include "efl_ui_layout_part.eo.c" /* Efl.Part end */ diff --git a/src/lib/elementary/efl_ui_layout_pack.c b/src/lib/elementary/efl_ui_layout_pack.c index b77ebf7333..234ae5ad8a 100644 --- a/src/lib/elementary/efl_ui_layout_pack.c +++ b/src/lib/elementary/efl_ui_layout_pack.c @@ -210,8 +210,7 @@ _efl_ui_layout_part_box_efl_pack_linear_pack_after(Eo *obj EINA_UNUSED, Efl_Ui_L if (other) ELM_PART_RETURN_VAL(_efl_ui_layout_box_insert_before(pd->obj, pd->sd, pd->part, subobj, other)); - ELM_PART_CALL(efl_pack_end(obj, subobj)); - ELM_PART_RETURN_VAL(EINA_TRUE); + ELM_PART_RETURN_VAL(efl_pack_end(obj, subobj)); } EOLIAN static Eina_Bool diff --git a/src/lib/elementary/efl_ui_layout_part.eo b/src/lib/elementary/efl_ui_layout_part.eo index dd075c209d..4903679e8a 100644 --- a/src/lib/elementary/efl_ui_layout_part.eo +++ b/src/lib/elementary/efl_ui_layout_part.eo @@ -1,9 +1,8 @@ -class Efl.Ui.Layout.Part (Efl.Object, Efl.Container, Efl.Text, Efl.Ui.Cursor) +class Efl.Ui.Layout.Part (Efl.Ui.Widget.Part, Efl.Container, Efl.Text, Efl.Ui.Cursor) { [[Elementary layout internal part class]] - data: Elm_Part_Data; + data: null; implements { - Efl.Object.destructor; Efl.Container.content { get; set; } Efl.Container.content_unset; Efl.Text.text { set; get; } diff --git a/src/lib/elementary/efl_ui_panes.c b/src/lib/elementary/efl_ui_panes.c index d0f955df39..1dc0c60d03 100644 --- a/src/lib/elementary/efl_ui_panes.c +++ b/src/lib/elementary/efl_ui_panes.c @@ -531,12 +531,12 @@ _efl_ui_panes_class_constructor(Efl_Class *klass) /* Efl.Part begin */ -ELM_PART_OVERRIDE(efl_ui_panes, EFL_UI_PANES, EFL_UI_LAYOUT, Efl_Ui_Panes_Data, Elm_Part_Data) +ELM_PART_OVERRIDE(efl_ui_panes, EFL_UI_PANES, Efl_Ui_Panes_Data) EOLIAN static void -_efl_ui_panes_part_hint_min_allow_set(Eo *obj, Elm_Part_Data *_pd EINA_UNUSED, Eina_Bool allow) +_efl_ui_panes_part_hint_min_allow_set(Eo *obj, void *_pd EINA_UNUSED, Eina_Bool allow) { - Elm_Part_Data *pd = efl_data_scope_get(obj, EFL_UI_LAYOUT_PART_CLASS); + Elm_Part_Data *pd = efl_data_scope_get(obj, EFL_UI_WIDGET_PART_CLASS); Efl_Ui_Panes_Data *sd = efl_data_scope_get(pd->obj, EFL_UI_PANES_CLASS); if (!strcmp(pd->part, "first")) @@ -554,10 +554,10 @@ _efl_ui_panes_part_hint_min_allow_set(Eo *obj, Elm_Part_Data *_pd EINA_UNUSED, E } EOLIAN static Eina_Bool -_efl_ui_panes_part_hint_min_allow_get(Eo *obj, Elm_Part_Data *_pd EINA_UNUSED) +_efl_ui_panes_part_hint_min_allow_get(Eo *obj, void *_pd EINA_UNUSED) { Eina_Bool ret = EINA_FALSE; - Elm_Part_Data *pd = efl_data_scope_get(obj, EFL_UI_LAYOUT_PART_CLASS); + Elm_Part_Data *pd = efl_data_scope_get(obj, EFL_UI_WIDGET_PART_CLASS); Efl_Ui_Panes_Data *sd = efl_data_scope_get(pd->obj, EFL_UI_PANES_CLASS); if (!strcmp(pd->part, "first")) @@ -573,9 +573,9 @@ _efl_ui_panes_part_hint_min_allow_get(Eo *obj, Elm_Part_Data *_pd EINA_UNUSED) } EOLIAN static double -_efl_ui_panes_part_split_ratio_min_get(Eo *obj, Elm_Part_Data *_pd EINA_UNUSED) +_efl_ui_panes_part_split_ratio_min_get(Eo *obj, void *_pd EINA_UNUSED) { - Elm_Part_Data *pd = efl_data_scope_get(obj, EFL_UI_LAYOUT_PART_CLASS); + Elm_Part_Data *pd = efl_data_scope_get(obj, EFL_UI_WIDGET_PART_CLASS); Efl_Ui_Panes_Data *sd = efl_data_scope_get(pd->obj, EFL_UI_PANES_CLASS); double ret = 0.0; @@ -588,9 +588,9 @@ _efl_ui_panes_part_split_ratio_min_get(Eo *obj, Elm_Part_Data *_pd EINA_UNUSED) } EOLIAN static void -_efl_ui_panes_part_split_ratio_min_set(Eo *obj, Elm_Part_Data *_pd EINA_UNUSED, double ratio) +_efl_ui_panes_part_split_ratio_min_set(Eo *obj, void *_pd EINA_UNUSED, double ratio) { - Elm_Part_Data *pd = efl_data_scope_get(obj, EFL_UI_LAYOUT_PART_CLASS); + Elm_Part_Data *pd = efl_data_scope_get(obj, EFL_UI_WIDGET_PART_CLASS); Efl_Ui_Panes_Data *sd = efl_data_scope_get(pd->obj, EFL_UI_PANES_CLASS); if (!strcmp(pd->part, "first")) diff --git a/src/lib/elementary/efl_ui_panes_part.eo b/src/lib/elementary/efl_ui_panes_part.eo index 23cc3d0b24..9630c68744 100644 --- a/src/lib/elementary/efl_ui_panes_part.eo +++ b/src/lib/elementary/efl_ui_panes_part.eo @@ -1,7 +1,7 @@ class Efl.Ui.Panes.Part (Efl.Ui.Layout.Part) { [[Elementary Panes internal part class]] - data: Elm_Part_Data; + data: null; methods { @property hint_min_allow { [[Allow user to set size hints to be respected and ignore combined diff --git a/src/lib/elementary/efl_ui_progressbar.c b/src/lib/elementary/efl_ui_progressbar.c index 7e0291183e..af235a4e74 100644 --- a/src/lib/elementary/efl_ui_progressbar.c +++ b/src/lib/elementary/efl_ui_progressbar.c @@ -641,29 +641,29 @@ _efl_ui_progressbar_class_constructor(Efl_Class *klass) } /* Efl.Part begin */ -ELM_PART_OVERRIDE(efl_ui_progressbar, EFL_UI_PROGRESSBAR, EFL_UI_LAYOUT, Efl_Ui_Progressbar_Data, Elm_Part_Data) +ELM_PART_OVERRIDE(efl_ui_progressbar, EFL_UI_PROGRESSBAR, Efl_Ui_Progressbar_Data) static EOLIAN Eina_Bool -_efl_ui_progressbar_part_efl_container_content_set(Eo *obj, Elm_Part_Data *_pd EINA_UNUSED, Efl_Gfx *content) +_efl_ui_progressbar_part_efl_container_content_set(Eo *obj, void *_pd EINA_UNUSED, Efl_Gfx *content) { - Elm_Part_Data *pd = efl_data_scope_get(obj, EFL_UI_LAYOUT_PART_CLASS); + Elm_Part_Data *pd = efl_data_scope_get(obj, EFL_UI_WIDGET_PART_CLASS); Efl_Ui_Progressbar_Data *sd = efl_data_scope_get(pd->obj, EFL_UI_PROGRESSBAR_CLASS); ELM_PART_RETURN_VAL(_efl_ui_progressbar_content_set(pd->obj, sd, pd->part, content)); } EOLIAN static void -_efl_ui_progressbar_part_efl_ui_range_range_value_set(Eo *obj, Elm_Part_Data *_pd EINA_UNUSED, double val) +_efl_ui_progressbar_part_efl_ui_range_range_value_set(Eo *obj, void *_pd EINA_UNUSED, double val) { - Elm_Part_Data *pd = efl_data_scope_get(obj, EFL_UI_LAYOUT_PART_CLASS); + Elm_Part_Data *pd = efl_data_scope_get(obj, EFL_UI_WIDGET_PART_CLASS); Efl_Ui_Progressbar_Data *sd = efl_data_scope_get(pd->obj, EFL_UI_PROGRESSBAR_CLASS); _progressbar_part_value_set(pd->obj, sd, pd->part, val); } EOLIAN static double -_efl_ui_progressbar_part_efl_ui_range_range_value_get(Eo *obj, Elm_Part_Data *_pd EINA_UNUSED) +_efl_ui_progressbar_part_efl_ui_range_range_value_get(Eo *obj, void *_pd EINA_UNUSED) { - Elm_Part_Data *pd = efl_data_scope_get(obj, EFL_UI_LAYOUT_PART_CLASS); + Elm_Part_Data *pd = efl_data_scope_get(obj, EFL_UI_WIDGET_PART_CLASS); Efl_Ui_Progressbar_Data *sd = efl_data_scope_get(pd->obj, EFL_UI_PROGRESSBAR_CLASS); return _progressbar_part_value_get(sd, pd->part); diff --git a/src/lib/elementary/efl_ui_progressbar_part.eo b/src/lib/elementary/efl_ui_progressbar_part.eo index 17051547a0..2263a6a73a 100644 --- a/src/lib/elementary/efl_ui_progressbar_part.eo +++ b/src/lib/elementary/efl_ui_progressbar_part.eo @@ -1,7 +1,7 @@ class Efl.Ui.Progressbar.Part (Efl.Ui.Layout.Part, Efl.Ui.Range) { [[Elementary progressbar internal part class]] - data: Elm_Part_Data; + data: null; implements { Efl.Container.content { set; } Efl.Ui.Range.range_value { set; get; } diff --git a/src/lib/elementary/efl_ui_slider.c b/src/lib/elementary/efl_ui_slider.c index 3dd617ff90..409fbe2398 100644 --- a/src/lib/elementary/efl_ui_slider.c +++ b/src/lib/elementary/efl_ui_slider.c @@ -1510,7 +1510,7 @@ _efl_ui_slider_elm_interface_atspi_widget_action_elm_actions_get(Eo *obj EINA_UN EFL_TEXT_PART_DEFAULT_IMPLEMENT(efl_ui_slider, Efl_Ui_Slider_Data) /* Efl.Part begin */ -ELM_PART_OVERRIDE(efl_ui_slider, EFL_UI_SLIDER, EFL_UI_LAYOUT, Efl_Ui_Slider_Data, Elm_Part_Data) +ELM_PART_OVERRIDE(efl_ui_slider, EFL_UI_SLIDER, Efl_Ui_Slider_Data) static Eina_Bool _efl_ui_slider_content_set(Eo *obj, Efl_Ui_Slider_Data *_pd EINA_UNUSED, const char *part, Evas_Object *content) @@ -1524,9 +1524,9 @@ _efl_ui_slider_content_set(Eo *obj, Efl_Ui_Slider_Data *_pd EINA_UNUSED, const c } static EOLIAN Eina_Bool -_efl_ui_slider_part_efl_container_content_set(Eo *obj, Elm_Part_Data *_pd EINA_UNUSED, Efl_Gfx *content) +_efl_ui_slider_part_efl_container_content_set(Eo *obj, void *_pd EINA_UNUSED, Efl_Gfx *content) { - Elm_Part_Data *pd = efl_data_scope_get(obj, EFL_UI_LAYOUT_PART_CLASS); + Elm_Part_Data *pd = efl_data_scope_get(obj, EFL_UI_WIDGET_PART_CLASS); Efl_Ui_Slider_Data *sd = efl_data_scope_get(pd->obj, EFL_UI_SLIDER_CLASS); ELM_PART_RETURN_VAL(_efl_ui_slider_content_set(pd->obj, sd, pd->part, content)); } @@ -1565,18 +1565,18 @@ _span_size_set(Eo *obj, Efl_Ui_Slider_Data *sd, int w, int h) } EOLIAN void -_efl_ui_slider_part_efl_gfx_size_hint_hint_min_set(Eo *obj, Elm_Part_Data *_pd EINA_UNUSED, Eina_Size2D sz) +_efl_ui_slider_part_efl_gfx_size_hint_hint_min_set(Eo *obj, void *_pd EINA_UNUSED, Eina_Size2D sz) { - Elm_Part_Data *pd = efl_data_scope_get(obj, EFL_UI_LAYOUT_PART_CLASS); + Elm_Part_Data *pd = efl_data_scope_get(obj, EFL_UI_WIDGET_PART_CLASS); Efl_Ui_Slider_Data *sd = efl_data_scope_get(pd->obj, EFL_UI_SLIDER_CLASS); _span_size_set(pd->obj, sd, sz.w, sz.h); } EOLIAN Eina_Size2D -_efl_ui_slider_part_efl_gfx_size_hint_hint_min_get(Eo *obj, Elm_Part_Data *_pd EINA_UNUSED) +_efl_ui_slider_part_efl_gfx_size_hint_hint_min_get(Eo *obj, void *_pd EINA_UNUSED) { - Elm_Part_Data *pd = efl_data_scope_get(obj, EFL_UI_LAYOUT_PART_CLASS); + Elm_Part_Data *pd = efl_data_scope_get(obj, EFL_UI_WIDGET_PART_CLASS); Efl_Ui_Slider_Data *sd = efl_data_scope_get(pd->obj, EFL_UI_SLIDER_CLASS); if (_is_horizontal(sd->dir)) diff --git a/src/lib/elementary/efl_ui_slider_part.eo b/src/lib/elementary/efl_ui_slider_part.eo index 0496ff2717..d7b58ddf18 100644 --- a/src/lib/elementary/efl_ui_slider_part.eo +++ b/src/lib/elementary/efl_ui_slider_part.eo @@ -1,7 +1,7 @@ class Efl.Ui.Slider.Part (Efl.Ui.Layout.Part, Efl.Gfx.Size.Hint) { [[Elementary slider internal part class]] - data: Elm_Part_Data; + data: null; implements { Efl.Container.content { set; } Efl.Gfx.Size.Hint.hint_min { set; get; } diff --git a/src/lib/elementary/efl_ui_text.c b/src/lib/elementary/efl_ui_text.c index 353b39207d..2f1232a9b4 100644 --- a/src/lib/elementary/efl_ui_text.c +++ b/src/lib/elementary/efl_ui_text.c @@ -5388,9 +5388,9 @@ _efl_ui_text_move_cb(void *data, Evas *e EINA_UNUSED, #if 0 /* Efl.Part begin */ -ELM_PART_OVERRIDE(elm_entry, EFL_UI_TEXT, EFL_UI_LAYOUT, Efl_Ui_Text_Data, Elm_Part_Data) -ELM_PART_OVERRIDE_CONTENT_SET(elm_entry, EFL_UI_TEXT, EFL_UI_LAYOUT, Efl_Ui_Text_Data, Elm_Part_Data) -ELM_PART_OVERRIDE_CONTENT_UNSET(elm_entry, EFL_UI_TEXT, EFL_UI_LAYOUT, Efl_Ui_Text_Data, Elm_Part_Data) +ELM_PART_OVERRIDE(elm_entry, EFL_UI_TEXT, Efl_Ui_Text_Data) +ELM_PART_OVERRIDE_CONTENT_SET(elm_entry, EFL_UI_TEXT, Efl_Ui_Text_Data) +ELM_PART_OVERRIDE_CONTENT_UNSET(elm_entry, EFL_UI_TEXT, Efl_Ui_Text_Data) #include "elm_entry_part.eo.c" /* Efl.Part end */ diff --git a/src/lib/elementary/efl_ui_textpath.c b/src/lib/elementary/efl_ui_textpath.c index 10ccdf1fe9..22883f2d01 100644 --- a/src/lib/elementary/efl_ui_textpath.c +++ b/src/lib/elementary/efl_ui_textpath.c @@ -654,9 +654,9 @@ _efl_ui_textpath_ellipsis_get(Eo *obj EINA_UNUSED, Efl_Ui_Textpath_Data *pd) } /* Efl.Part begin */ -ELM_PART_OVERRIDE(efl_ui_textpath, EFL_UI_TEXTPATH, EFL_UI_LAYOUT, Efl_Ui_Textpath_Data, Elm_Part_Data) -ELM_PART_OVERRIDE_TEXT_SET(efl_ui_textpath, EFL_UI_TEXTPATH, EFL_UI_LAYOUT, Efl_Ui_Textpath_Data, Elm_Part_Data) -ELM_PART_OVERRIDE_TEXT_GET(efl_ui_textpath, EFL_UI_TEXTPATH, EFL_UI_LAYOUT, Efl_Ui_Textpath_Data, Elm_Part_Data) +ELM_PART_OVERRIDE(efl_ui_textpath, EFL_UI_TEXTPATH, Efl_Ui_Textpath_Data) +ELM_PART_OVERRIDE_TEXT_SET(efl_ui_textpath, EFL_UI_TEXTPATH, Efl_Ui_Textpath_Data) +ELM_PART_OVERRIDE_TEXT_GET(efl_ui_textpath, EFL_UI_TEXTPATH, Efl_Ui_Textpath_Data) #include "efl_ui_textpath_part.eo.c" /* Efl.Part end */ diff --git a/src/lib/elementary/efl_ui_widget_part.eo b/src/lib/elementary/efl_ui_widget_part.eo new file mode 100644 index 0000000000..e848686b5b --- /dev/null +++ b/src/lib/elementary/efl_ui_widget_part.eo @@ -0,0 +1,9 @@ +class Efl.Ui.Widget.Part (Efl.Object) +{ + data: Elm_Part_Data; + methods { + } + implements { + Efl.Object.destructor; + } +} diff --git a/src/lib/elementary/efl_ui_win.c b/src/lib/elementary/efl_ui_win.c index d7dab7c39d..3d6abd8483 100644 --- a/src/lib/elementary/efl_ui_win.c +++ b/src/lib/elementary/efl_ui_win.c @@ -6994,37 +6994,7 @@ _efl_ui_win_part_file_get(Eo *obj, Efl_Ui_Win_Data *sd, const char *part, const return EINA_FALSE; } -/* Efl.Part begin */ - -static void -_efl_ui_win_part_efl_gfx_color_set(Eo *obj, Elm_Part_Data *pd, int r, int g, int b, int a) -{ - if (EVAS_COLOR_SANITIZE(r, g, b, a)) - ERR("Evas only handles premultiplied colors (0 <= R,G,B <= A <= 255)"); - - _efl_ui_win_part_color_set(pd->obj, pd->sd, pd->part, r, g, b, a); - ELM_PART_RETURN_VOID; -} - -static void -_efl_ui_win_part_efl_gfx_color_get(Eo *obj, Elm_Part_Data *pd, int *r, int *g, int *b, int *a) -{ - _efl_ui_win_part_color_get(pd->obj, pd->sd, pd->part, r, g, b, a); - ELM_PART_RETURN_VOID; -} - -static Eina_Bool -_efl_ui_win_part_efl_file_file_set(Eo *obj, Elm_Part_Data *pd, const char *file, const char *key) -{ - ELM_PART_RETURN_VAL(_efl_ui_win_part_file_set(pd->obj, pd->sd, pd->part, file, key)); -} - -static void -_efl_ui_win_part_efl_file_file_get(Eo *obj, Elm_Part_Data *pd, const char **file, const char **key) -{ - _efl_ui_win_part_file_get(pd->obj, pd->sd, pd->part, file, key); - ELM_PART_RETURN_VOID; -} +/* Default content */ EOLIAN static Eina_Bool _efl_ui_win_efl_container_content_set(Eo *obj, Efl_Ui_Win_Data *sd, Evas_Object *content) @@ -7044,10 +7014,51 @@ _efl_ui_win_efl_container_content_unset(Eo *obj, Efl_Ui_Win_Data *sd) return _efl_ui_win_content_unset(obj, sd, "content"); } -ELM_PART_IMPLEMENT(efl_ui_win, EFL_UI_WIN, Efl_Ui_Win_Data, Elm_Part_Data) -ELM_PART_IMPLEMENT_CONTENT_SET(efl_ui_win, EFL_UI_WIN, Efl_Ui_Win_Data, Elm_Part_Data) -ELM_PART_IMPLEMENT_CONTENT_GET(efl_ui_win, EFL_UI_WIN, Efl_Ui_Win_Data, Elm_Part_Data) -ELM_PART_IMPLEMENT_CONTENT_UNSET(efl_ui_win, EFL_UI_WIN, Efl_Ui_Win_Data, Elm_Part_Data) +/* Efl.Part begin */ + +static void +_efl_ui_win_part_efl_gfx_color_set(Eo *obj, void *_pd EINA_UNUSED, int r, int g, int b, int a) +{ + Elm_Part_Data *pd = efl_data_scope_get(obj, EFL_UI_WIDGET_PART_CLASS); + Efl_Ui_Win_Data *sd = efl_data_scope_get(pd->obj, MY_CLASS); + + if (EVAS_COLOR_SANITIZE(r, g, b, a)) + ERR("Evas only handles premultiplied colors (0 <= R,G,B <= A <= 255)"); + + _efl_ui_win_part_color_set(pd->obj, sd, pd->part, r, g, b, a); + ELM_PART_RETURN_VOID; +} + +static void +_efl_ui_win_part_efl_gfx_color_get(Eo *obj, void *_pd EINA_UNUSED, int *r, int *g, int *b, int *a) +{ + Elm_Part_Data *pd = efl_data_scope_get(obj, EFL_UI_WIDGET_PART_CLASS); + Efl_Ui_Win_Data *sd = efl_data_scope_get(pd->obj, MY_CLASS); + _efl_ui_win_part_color_get(pd->obj, sd, pd->part, r, g, b, a); + ELM_PART_RETURN_VOID; +} + +static Eina_Bool +_efl_ui_win_part_efl_file_file_set(Eo *obj, void *_pd EINA_UNUSED, const char *file, const char *key) +{ + Elm_Part_Data *pd = efl_data_scope_get(obj, EFL_UI_WIDGET_PART_CLASS); + Efl_Ui_Win_Data *sd = efl_data_scope_get(pd->obj, MY_CLASS); + ELM_PART_RETURN_VAL(_efl_ui_win_part_file_set(pd->obj, sd, pd->part, file, key)); +} + +static void +_efl_ui_win_part_efl_file_file_get(Eo *obj, void *_pd EINA_UNUSED, const char **file, const char **key) +{ + Elm_Part_Data *pd = efl_data_scope_get(obj, EFL_UI_WIDGET_PART_CLASS); + Efl_Ui_Win_Data *sd = efl_data_scope_get(pd->obj, MY_CLASS); + _efl_ui_win_part_file_get(pd->obj, sd, pd->part, file, key); + ELM_PART_RETURN_VOID; +} + +ELM_PART_OVERRIDE(efl_ui_win, EFL_UI_WIN, Efl_Ui_Win_Data) +ELM_PART_OVERRIDE_CONTENT_SET(efl_ui_win, EFL_UI_WIN, Efl_Ui_Win_Data) +ELM_PART_OVERRIDE_CONTENT_GET(efl_ui_win, EFL_UI_WIN, Efl_Ui_Win_Data) +ELM_PART_OVERRIDE_CONTENT_UNSET(efl_ui_win, EFL_UI_WIN, Efl_Ui_Win_Data) ELM_PART_CONTENT_DEFAULT_SET(efl_ui_win, "content") #include "efl_ui_win_part.eo.c" diff --git a/src/lib/elementary/efl_ui_win_part.eo b/src/lib/elementary/efl_ui_win_part.eo index e5d4b4daba..0086690fe7 100644 --- a/src/lib/elementary/efl_ui_win_part.eo +++ b/src/lib/elementary/efl_ui_win_part.eo @@ -1,9 +1,8 @@ -class Efl.Ui.Win.Part (Efl.Object, Efl.Container, Efl.Gfx, Efl.File) +class Efl.Ui.Win.Part (Efl.Ui.Widget.Part, Efl.Container, Efl.Gfx, Efl.File) { [[Efl UI window interal part class]] - data: Elm_Part_Data; + data: null; implements { - Efl.Object.destructor; Efl.Container.content { get; set; } Efl.Container.content_unset; Efl.Gfx.color { get; set; } diff --git a/src/lib/elementary/elc_ctxpopup.c b/src/lib/elementary/elc_ctxpopup.c index 553d526b79..709b0579ce 100644 --- a/src/lib/elementary/elc_ctxpopup.c +++ b/src/lib/elementary/elc_ctxpopup.c @@ -1636,10 +1636,10 @@ ELM_WIDGET_KEY_DOWN_DEFAULT_IMPLEMENT(elm_ctxpopup, Elm_Ctxpopup_Data) /* Efl.Part begin */ -ELM_PART_OVERRIDE(elm_ctxpopup, ELM_CTXPOPUP, EFL_UI_LAYOUT, Elm_Ctxpopup_Data, Elm_Part_Data) -ELM_PART_OVERRIDE_CONTENT_SET(elm_ctxpopup, ELM_CTXPOPUP, EFL_UI_LAYOUT, Elm_Ctxpopup_Data, Elm_Part_Data) -ELM_PART_OVERRIDE_CONTENT_GET(elm_ctxpopup, ELM_CTXPOPUP, EFL_UI_LAYOUT, Elm_Ctxpopup_Data, Elm_Part_Data) -ELM_PART_OVERRIDE_CONTENT_UNSET(elm_ctxpopup, ELM_CTXPOPUP, EFL_UI_LAYOUT, Elm_Ctxpopup_Data, Elm_Part_Data) +ELM_PART_OVERRIDE(elm_ctxpopup, ELM_CTXPOPUP, Elm_Ctxpopup_Data) +ELM_PART_OVERRIDE_CONTENT_SET(elm_ctxpopup, ELM_CTXPOPUP, Elm_Ctxpopup_Data) +ELM_PART_OVERRIDE_CONTENT_GET(elm_ctxpopup, ELM_CTXPOPUP, Elm_Ctxpopup_Data) +ELM_PART_OVERRIDE_CONTENT_UNSET(elm_ctxpopup, ELM_CTXPOPUP, Elm_Ctxpopup_Data) ELM_PART_CONTENT_DEFAULT_SET(elm_ctxpopup, "default") #include "elm_ctxpopup_part.eo.c" diff --git a/src/lib/elementary/elc_fileselector.c b/src/lib/elementary/elc_fileselector.c index 900da0ac15..4b4dda5f9b 100644 --- a/src/lib/elementary/elc_fileselector.c +++ b/src/lib/elementary/elc_fileselector.c @@ -3223,8 +3223,8 @@ ELM_WIDGET_KEY_DOWN_DEFAULT_IMPLEMENT(elm_fileselector, Elm_Fileselector_Data) /* Efl.Part begin */ -ELM_PART_OVERRIDE(elm_fileselector, ELM_FILESELECTOR, EFL_UI_LAYOUT, Elm_Fileselector_Data, Elm_Part_Data) -ELM_PART_OVERRIDE_TEXT_SET(elm_fileselector, ELM_FILESELECTOR, EFL_UI_LAYOUT, Elm_Fileselector_Data, Elm_Part_Data) +ELM_PART_OVERRIDE(elm_fileselector, ELM_FILESELECTOR, Elm_Fileselector_Data) +ELM_PART_OVERRIDE_TEXT_SET(elm_fileselector, ELM_FILESELECTOR, Elm_Fileselector_Data) #include "elm_fileselector_part.eo.c" /* Efl.Part end */ diff --git a/src/lib/elementary/elc_fileselector_entry.c b/src/lib/elementary/elc_fileselector_entry.c index 906e5f619e..886767e5ff 100644 --- a/src/lib/elementary/elc_fileselector_entry.c +++ b/src/lib/elementary/elc_fileselector_entry.c @@ -670,12 +670,12 @@ _elm_fileselector_entry_class_constructor(Efl_Class *klass) /* Efl.Part begin */ -ELM_PART_OVERRIDE(elm_fileselector_entry, ELM_FILESELECTOR_ENTRY, EFL_UI_LAYOUT, Elm_Fileselector_Entry_Data, Elm_Part_Data) -ELM_PART_OVERRIDE_CONTENT_SET(elm_fileselector_entry, ELM_FILESELECTOR_ENTRY, EFL_UI_LAYOUT, Elm_Fileselector_Entry_Data, Elm_Part_Data) -ELM_PART_OVERRIDE_CONTENT_GET(elm_fileselector_entry, ELM_FILESELECTOR_ENTRY, EFL_UI_LAYOUT, Elm_Fileselector_Entry_Data, Elm_Part_Data) -ELM_PART_OVERRIDE_CONTENT_UNSET(elm_fileselector_entry, ELM_FILESELECTOR_ENTRY, EFL_UI_LAYOUT, Elm_Fileselector_Entry_Data, Elm_Part_Data) -ELM_PART_OVERRIDE_TEXT_SET(elm_fileselector_entry, ELM_FILESELECTOR_ENTRY, EFL_UI_LAYOUT, Elm_Fileselector_Entry_Data, Elm_Part_Data) -ELM_PART_OVERRIDE_TEXT_GET(elm_fileselector_entry, ELM_FILESELECTOR_ENTRY, EFL_UI_LAYOUT, Elm_Fileselector_Entry_Data, Elm_Part_Data) +ELM_PART_OVERRIDE(elm_fileselector_entry, ELM_FILESELECTOR_ENTRY, Elm_Fileselector_Entry_Data) +ELM_PART_OVERRIDE_CONTENT_SET(elm_fileselector_entry, ELM_FILESELECTOR_ENTRY, Elm_Fileselector_Entry_Data) +ELM_PART_OVERRIDE_CONTENT_GET(elm_fileselector_entry, ELM_FILESELECTOR_ENTRY, Elm_Fileselector_Entry_Data) +ELM_PART_OVERRIDE_CONTENT_UNSET(elm_fileselector_entry, ELM_FILESELECTOR_ENTRY, Elm_Fileselector_Entry_Data) +ELM_PART_OVERRIDE_TEXT_SET(elm_fileselector_entry, ELM_FILESELECTOR_ENTRY, Elm_Fileselector_Entry_Data) +ELM_PART_OVERRIDE_TEXT_GET(elm_fileselector_entry, ELM_FILESELECTOR_ENTRY, Elm_Fileselector_Entry_Data) ELM_PART_CONTENT_DEFAULT_SET(elm_fileselector_entry, "button icon") #include "elm_fileselector_entry_part.eo.c" diff --git a/src/lib/elementary/elc_multibuttonentry.c b/src/lib/elementary/elc_multibuttonentry.c index 6e9cb567cd..1da8df6191 100644 --- a/src/lib/elementary/elc_multibuttonentry.c +++ b/src/lib/elementary/elc_multibuttonentry.c @@ -2137,9 +2137,9 @@ _elm_multibuttonentry_item_elm_interface_atspi_widget_action_elm_actions_get(Eo /* Efl.Part begin */ -ELM_PART_OVERRIDE(elm_multibuttonentry, ELM_MULTIBUTTONENTRY, EFL_UI_LAYOUT, Elm_Multibuttonentry_Data, Elm_Part_Data) -ELM_PART_OVERRIDE_TEXT_SET(elm_multibuttonentry, ELM_MULTIBUTTONENTRY, EFL_UI_LAYOUT, Elm_Multibuttonentry_Data, Elm_Part_Data) -ELM_PART_OVERRIDE_TEXT_GET(elm_multibuttonentry, ELM_MULTIBUTTONENTRY, EFL_UI_LAYOUT, Elm_Multibuttonentry_Data, Elm_Part_Data) +ELM_PART_OVERRIDE(elm_multibuttonentry, ELM_MULTIBUTTONENTRY, Elm_Multibuttonentry_Data) +ELM_PART_OVERRIDE_TEXT_SET(elm_multibuttonentry, ELM_MULTIBUTTONENTRY, Elm_Multibuttonentry_Data) +ELM_PART_OVERRIDE_TEXT_GET(elm_multibuttonentry, ELM_MULTIBUTTONENTRY, Elm_Multibuttonentry_Data) #include "elm_multibuttonentry_part.eo.c" /* Efl.Part end */ diff --git a/src/lib/elementary/elc_naviframe.c b/src/lib/elementary/elc_naviframe.c index c379c5a993..e9a39e4aa2 100644 --- a/src/lib/elementary/elc_naviframe.c +++ b/src/lib/elementary/elc_naviframe.c @@ -2099,12 +2099,12 @@ ELM_WIDGET_KEY_DOWN_DEFAULT_IMPLEMENT(elm_naviframe, Elm_Naviframe_Data) /* Efl.Part begin */ -ELM_PART_OVERRIDE(elm_naviframe, ELM_NAVIFRAME, EFL_UI_LAYOUT, Elm_Naviframe_Data, Elm_Part_Data) -ELM_PART_OVERRIDE_CONTENT_SET(elm_naviframe, ELM_NAVIFRAME, EFL_UI_LAYOUT, Elm_Naviframe_Data, Elm_Part_Data) -ELM_PART_OVERRIDE_CONTENT_GET(elm_naviframe, ELM_NAVIFRAME, EFL_UI_LAYOUT, Elm_Naviframe_Data, Elm_Part_Data) -ELM_PART_OVERRIDE_CONTENT_UNSET(elm_naviframe, ELM_NAVIFRAME, EFL_UI_LAYOUT, Elm_Naviframe_Data, Elm_Part_Data) -ELM_PART_OVERRIDE_TEXT_SET(elm_naviframe, ELM_NAVIFRAME, EFL_UI_LAYOUT, Elm_Naviframe_Data, Elm_Part_Data) -ELM_PART_OVERRIDE_TEXT_GET(elm_naviframe, ELM_NAVIFRAME, EFL_UI_LAYOUT, Elm_Naviframe_Data, Elm_Part_Data) +ELM_PART_OVERRIDE(elm_naviframe, ELM_NAVIFRAME, Elm_Naviframe_Data) +ELM_PART_OVERRIDE_CONTENT_SET(elm_naviframe, ELM_NAVIFRAME, Elm_Naviframe_Data) +ELM_PART_OVERRIDE_CONTENT_GET(elm_naviframe, ELM_NAVIFRAME, Elm_Naviframe_Data) +ELM_PART_OVERRIDE_CONTENT_UNSET(elm_naviframe, ELM_NAVIFRAME, Elm_Naviframe_Data) +ELM_PART_OVERRIDE_TEXT_SET(elm_naviframe, ELM_NAVIFRAME, Elm_Naviframe_Data) +ELM_PART_OVERRIDE_TEXT_GET(elm_naviframe, ELM_NAVIFRAME, Elm_Naviframe_Data) #include "elm_naviframe_part.eo.c" /* Efl.Part end */ diff --git a/src/lib/elementary/elc_player.c b/src/lib/elementary/elc_player.c index 04613a7a01..ac6d35ed17 100644 --- a/src/lib/elementary/elc_player.c +++ b/src/lib/elementary/elc_player.c @@ -696,8 +696,8 @@ ELM_WIDGET_KEY_DOWN_DEFAULT_IMPLEMENT(elm_player, Elm_Player_Data) /* Efl.Part implementation */ -ELM_PART_OVERRIDE(elm_player, ELM_PLAYER, EFL_UI_LAYOUT, Elm_Player_Data, Elm_Part_Data) -ELM_PART_OVERRIDE_CONTENT_SET(elm_player, ELM_PLAYER, EFL_UI_LAYOUT, Elm_Player_Data, Elm_Part_Data) +ELM_PART_OVERRIDE(elm_player, ELM_PLAYER, Elm_Player_Data) +ELM_PART_OVERRIDE_CONTENT_SET(elm_player, ELM_PLAYER, Elm_Player_Data) ELM_PART_CONTENT_DEFAULT_SET(elm_player, "video") #include "elm_player_part.eo.c" diff --git a/src/lib/elementary/elc_popup.c b/src/lib/elementary/elc_popup.c index b0478f9608..f7d6f9deb3 100644 --- a/src/lib/elementary/elc_popup.c +++ b/src/lib/elementary/elc_popup.c @@ -1917,12 +1917,12 @@ ELM_WIDGET_KEY_DOWN_DEFAULT_IMPLEMENT(elm_popup, Elm_Popup_Data) /* Efl.Part begin */ -ELM_PART_OVERRIDE(elm_popup, ELM_POPUP, EFL_UI_LAYOUT, Elm_Popup_Data, Elm_Part_Data) -ELM_PART_OVERRIDE_CONTENT_SET(elm_popup, ELM_POPUP, EFL_UI_LAYOUT, Elm_Popup_Data, Elm_Part_Data) -ELM_PART_OVERRIDE_CONTENT_GET(elm_popup, ELM_POPUP, EFL_UI_LAYOUT, Elm_Popup_Data, Elm_Part_Data) -ELM_PART_OVERRIDE_CONTENT_UNSET(elm_popup, ELM_POPUP, EFL_UI_LAYOUT, Elm_Popup_Data, Elm_Part_Data) -ELM_PART_OVERRIDE_TEXT_SET(elm_popup, ELM_POPUP, EFL_UI_LAYOUT, Elm_Popup_Data, Elm_Part_Data) -ELM_PART_OVERRIDE_TEXT_GET(elm_popup, ELM_POPUP, EFL_UI_LAYOUT, Elm_Popup_Data, Elm_Part_Data) +ELM_PART_OVERRIDE(elm_popup, ELM_POPUP, Elm_Popup_Data) +ELM_PART_OVERRIDE_CONTENT_SET(elm_popup, ELM_POPUP, Elm_Popup_Data) +ELM_PART_OVERRIDE_CONTENT_GET(elm_popup, ELM_POPUP, Elm_Popup_Data) +ELM_PART_OVERRIDE_CONTENT_UNSET(elm_popup, ELM_POPUP, Elm_Popup_Data) +ELM_PART_OVERRIDE_TEXT_SET(elm_popup, ELM_POPUP, Elm_Popup_Data) +ELM_PART_OVERRIDE_TEXT_GET(elm_popup, ELM_POPUP, Elm_Popup_Data) ELM_PART_CONTENT_DEFAULT_SET(elm_popup, "default") #include "elm_popup_part.eo.c" diff --git a/src/lib/elementary/elm_actionslider.c b/src/lib/elementary/elm_actionslider.c index 414bf2ebab..f7e94e002e 100644 --- a/src/lib/elementary/elm_actionslider.c +++ b/src/lib/elementary/elm_actionslider.c @@ -659,9 +659,9 @@ _elm_actionslider_class_constructor(Efl_Class *klass) } /* Efl.Part begin */ -ELM_PART_OVERRIDE(elm_actionslider, ELM_ACTIONSLIDER, EFL_UI_LAYOUT, Elm_Actionslider_Data, Elm_Part_Data) -ELM_PART_OVERRIDE_TEXT_SET(elm_actionslider, ELM_ACTIONSLIDER, EFL_UI_LAYOUT, Elm_Actionslider_Data, Elm_Part_Data) -ELM_PART_OVERRIDE_TEXT_GET(elm_actionslider, ELM_ACTIONSLIDER, EFL_UI_LAYOUT, Elm_Actionslider_Data, Elm_Part_Data) +ELM_PART_OVERRIDE(elm_actionslider, ELM_ACTIONSLIDER, Elm_Actionslider_Data) +ELM_PART_OVERRIDE_TEXT_SET(elm_actionslider, ELM_ACTIONSLIDER, Elm_Actionslider_Data) +ELM_PART_OVERRIDE_TEXT_GET(elm_actionslider, ELM_ACTIONSLIDER, Elm_Actionslider_Data) #include "elm_actionslider_part.eo.c" /* Efl.Part end */ diff --git a/src/lib/elementary/elm_bubble.c b/src/lib/elementary/elm_bubble.c index 84eb857371..a39aa3d000 100644 --- a/src/lib/elementary/elm_bubble.c +++ b/src/lib/elementary/elm_bubble.c @@ -281,8 +281,8 @@ _elm_bubble_class_constructor(Efl_Class *klass) } /* Efl.Part begin */ -ELM_PART_OVERRIDE(elm_bubble, ELM_BUBBLE, EFL_UI_LAYOUT, Elm_Bubble_Data, Elm_Part_Data) -ELM_PART_OVERRIDE_TEXT_SET(elm_bubble, ELM_BUBBLE, EFL_UI_LAYOUT, Elm_Bubble_Data, Elm_Part_Data) +ELM_PART_OVERRIDE(elm_bubble, ELM_BUBBLE, Elm_Bubble_Data) +ELM_PART_OVERRIDE_TEXT_SET(elm_bubble, ELM_BUBBLE, Elm_Bubble_Data) #include "elm_bubble_part.eo.c" /* Efl.Part end */ diff --git a/src/lib/elementary/elm_dayselector.c b/src/lib/elementary/elm_dayselector.c index e48bbb0cec..3f20da3b74 100644 --- a/src/lib/elementary/elm_dayselector.c +++ b/src/lib/elementary/elm_dayselector.c @@ -607,9 +607,9 @@ _elm_dayselector_class_constructor(Efl_Class *klass) /* Efl.Part begin */ -ELM_PART_OVERRIDE(elm_dayselector, ELM_DAYSELECTOR, EFL_UI_LAYOUT, Elm_Dayselector_Data, Elm_Part_Data) -ELM_PART_OVERRIDE_CONTENT_SET(elm_dayselector, ELM_DAYSELECTOR, EFL_UI_LAYOUT, Elm_Dayselector_Data, Elm_Part_Data) -ELM_PART_OVERRIDE_CONTENT_UNSET(elm_dayselector, ELM_DAYSELECTOR, EFL_UI_LAYOUT, Elm_Dayselector_Data, Elm_Part_Data) +ELM_PART_OVERRIDE(elm_dayselector, ELM_DAYSELECTOR, Elm_Dayselector_Data) +ELM_PART_OVERRIDE_CONTENT_SET(elm_dayselector, ELM_DAYSELECTOR, Elm_Dayselector_Data) +ELM_PART_OVERRIDE_CONTENT_UNSET(elm_dayselector, ELM_DAYSELECTOR, Elm_Dayselector_Data) #include "elm_dayselector_part.eo.c" /* Efl.Part end */ diff --git a/src/lib/elementary/elm_entry.c b/src/lib/elementary/elm_entry.c index a1a6896c3b..0dbe98b9a5 100644 --- a/src/lib/elementary/elm_entry.c +++ b/src/lib/elementary/elm_entry.c @@ -6049,11 +6049,11 @@ _elm_entry_elm_interface_atspi_accessible_name_get(Eo *obj, Elm_Entry_Data *sd) /* Efl.Part begin */ -ELM_PART_OVERRIDE(elm_entry, ELM_ENTRY, EFL_UI_LAYOUT, Elm_Entry_Data, Elm_Part_Data) -ELM_PART_OVERRIDE_CONTENT_SET(elm_entry, ELM_ENTRY, EFL_UI_LAYOUT, Elm_Entry_Data, Elm_Part_Data) -ELM_PART_OVERRIDE_CONTENT_UNSET(elm_entry, ELM_ENTRY, EFL_UI_LAYOUT, Elm_Entry_Data, Elm_Part_Data) -ELM_PART_OVERRIDE_TEXT_SET(elm_entry, ELM_ENTRY, EFL_UI_LAYOUT, Elm_Entry_Data, Elm_Part_Data) -ELM_PART_OVERRIDE_TEXT_GET(elm_entry, ELM_ENTRY, EFL_UI_LAYOUT, Elm_Entry_Data, Elm_Part_Data) +ELM_PART_OVERRIDE(elm_entry, ELM_ENTRY, Elm_Entry_Data) +ELM_PART_OVERRIDE_CONTENT_SET(elm_entry, ELM_ENTRY, Elm_Entry_Data) +ELM_PART_OVERRIDE_CONTENT_UNSET(elm_entry, ELM_ENTRY, Elm_Entry_Data) +ELM_PART_OVERRIDE_TEXT_SET(elm_entry, ELM_ENTRY, Elm_Entry_Data) +ELM_PART_OVERRIDE_TEXT_GET(elm_entry, ELM_ENTRY, Elm_Entry_Data) ELM_PART_CONTENT_DEFAULT_SET(elm_entry, "icon") #include "elm_entry_part.eo.c" diff --git a/src/lib/elementary/elm_flip_part.eo b/src/lib/elementary/elm_flip_part.eo index 037f59c0b1..9e5c1e8495 100644 --- a/src/lib/elementary/elm_flip_part.eo +++ b/src/lib/elementary/elm_flip_part.eo @@ -1,7 +1,7 @@ class Elm.Flip.Part (Efl.Object, Efl.Container) { [[Elementary flip internal part class]] - data: Elm_Part_Data; + data: null; implements { Efl.Object.destructor; Efl.Container.content { get; set; } diff --git a/src/lib/elementary/elm_hover.c b/src/lib/elementary/elm_hover.c index ab516e4d30..0e8f85820a 100644 --- a/src/lib/elementary/elm_hover.c +++ b/src/lib/elementary/elm_hover.c @@ -892,10 +892,10 @@ _elm_hover_elm_interface_atspi_widget_action_elm_actions_get(Eo *obj EINA_UNUSED /* Efl.Part begin */ -ELM_PART_OVERRIDE(elm_hover, ELM_HOVER, EFL_UI_LAYOUT, Elm_Hover_Data, Elm_Part_Data) -ELM_PART_OVERRIDE_CONTENT_SET(elm_hover, ELM_HOVER, EFL_UI_LAYOUT, Elm_Hover_Data, Elm_Part_Data) -ELM_PART_OVERRIDE_CONTENT_GET(elm_hover, ELM_HOVER, EFL_UI_LAYOUT, Elm_Hover_Data, Elm_Part_Data) -ELM_PART_OVERRIDE_CONTENT_UNSET(elm_hover, ELM_HOVER, EFL_UI_LAYOUT, Elm_Hover_Data, Elm_Part_Data) +ELM_PART_OVERRIDE(elm_hover, ELM_HOVER, Elm_Hover_Data) +ELM_PART_OVERRIDE_CONTENT_SET(elm_hover, ELM_HOVER, Elm_Hover_Data) +ELM_PART_OVERRIDE_CONTENT_GET(elm_hover, ELM_HOVER, Elm_Hover_Data) +ELM_PART_OVERRIDE_CONTENT_UNSET(elm_hover, ELM_HOVER, Elm_Hover_Data) #include "elm_hover_part.eo.c" /* Efl.Part end */ diff --git a/src/lib/elementary/elm_label.c b/src/lib/elementary/elm_label.c index 8c619e3e99..891e1d2fd8 100644 --- a/src/lib/elementary/elm_label.c +++ b/src/lib/elementary/elm_label.c @@ -634,8 +634,8 @@ _elm_label_class_constructor(Efl_Class *klass) } /* Efl.Part begin */ -ELM_PART_OVERRIDE(elm_label, ELM_LABEL, EFL_UI_LAYOUT, Elm_Label_Data, Elm_Part_Data) -ELM_PART_OVERRIDE_TEXT_SET(elm_label, ELM_LABEL, EFL_UI_LAYOUT, Elm_Label_Data, Elm_Part_Data) +ELM_PART_OVERRIDE(elm_label, ELM_LABEL, Elm_Label_Data) +ELM_PART_OVERRIDE_TEXT_SET(elm_label, ELM_LABEL, Elm_Label_Data) #include "elm_label_part.eo.c" /* Efl.Part end */ diff --git a/src/lib/elementary/elm_mapbuf.c b/src/lib/elementary/elm_mapbuf.c index 64b69a705b..45d5caad6f 100644 --- a/src/lib/elementary/elm_mapbuf.c +++ b/src/lib/elementary/elm_mapbuf.c @@ -441,10 +441,10 @@ _elm_mapbuf_class_constructor(Efl_Class *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) +ELM_PART_OVERRIDE(elm_mapbuf, ELM_MAPBUF, Elm_Mapbuf_Data) +ELM_PART_OVERRIDE_CONTENT_SET(elm_mapbuf, ELM_MAPBUF, Elm_Mapbuf_Data) +ELM_PART_OVERRIDE_CONTENT_GET(elm_mapbuf, ELM_MAPBUF, Elm_Mapbuf_Data) +ELM_PART_OVERRIDE_CONTENT_UNSET(elm_mapbuf, ELM_MAPBUF, Elm_Mapbuf_Data) ELM_PART_CONTENT_DEFAULT_SET(elm_mapbuf, "default") #include "elm_mapbuf_part.eo.c" diff --git a/src/lib/elementary/elm_mapbuf_part.eo b/src/lib/elementary/elm_mapbuf_part.eo index d9b411994a..1242de5be8 100644 --- a/src/lib/elementary/elm_mapbuf_part.eo +++ b/src/lib/elementary/elm_mapbuf_part.eo @@ -1,9 +1,8 @@ -class Elm.Mapbuf.Part (Efl.Object, Efl.Container) +class Elm.Mapbuf.Part (Efl.Ui.Widget.Part, Efl.Container) { [[Elementary mapbuf internal part class]] - data: Elm_Part_Data; + data: null; implements { - Efl.Object.destructor; Efl.Container.content { get; set; } Efl.Container.content_unset; } diff --git a/src/lib/elementary/elm_notify.c b/src/lib/elementary/elm_notify.c index a2805fa377..f4f97dcd01 100644 --- a/src/lib/elementary/elm_notify.c +++ b/src/lib/elementary/elm_notify.c @@ -740,12 +740,12 @@ _elm_notify_class_constructor(Efl_Class *klass) /* Efl.Part begin */ -ELM_PART_IMPLEMENT(elm_notify, ELM_NOTIFY, Elm_Notify_Data, Elm_Part_Data) -ELM_PART_IMPLEMENT_TEXT_SET(elm_notify, ELM_NOTIFY, Elm_Notify_Data, Elm_Part_Data) -ELM_PART_IMPLEMENT_TEXT_GET(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) +ELM_PART_OVERRIDE(elm_notify, ELM_NOTIFY, Elm_Notify_Data) +ELM_PART_OVERRIDE_TEXT_SET(elm_notify, ELM_NOTIFY, Elm_Notify_Data) +ELM_PART_OVERRIDE_TEXT_GET(elm_notify, ELM_NOTIFY, Elm_Notify_Data) +ELM_PART_OVERRIDE_CONTENT_SET(elm_notify, ELM_NOTIFY, Elm_Notify_Data) +ELM_PART_OVERRIDE_CONTENT_GET(elm_notify, ELM_NOTIFY, Elm_Notify_Data) +ELM_PART_OVERRIDE_CONTENT_UNSET(elm_notify, ELM_NOTIFY, Elm_Notify_Data) ELM_PART_CONTENT_DEFAULT_SET(elm_notify, "default") #include "elm_notify_part.eo.c" diff --git a/src/lib/elementary/elm_notify_part.eo b/src/lib/elementary/elm_notify_part.eo index 17662e3e9f..536d3b1cb1 100644 --- a/src/lib/elementary/elm_notify_part.eo +++ b/src/lib/elementary/elm_notify_part.eo @@ -1,9 +1,8 @@ -class Elm.Notify.Part (Efl.Object, Efl.Container, Efl.Text) +class Elm.Notify.Part (Efl.Ui.Widget.Part, Efl.Container, Efl.Text) { [[Elementary notification internel part class]] - data: Elm_Part_Data; + data: null; implements { - Efl.Object.destructor; Efl.Text.text { get; set; } Efl.Container.content { get; set; } Efl.Container.content_unset; diff --git a/src/lib/elementary/elm_panel.c b/src/lib/elementary/elm_panel.c index bf9f75ba1d..55ee1fe107 100644 --- a/src/lib/elementary/elm_panel.c +++ b/src/lib/elementary/elm_panel.c @@ -1478,10 +1478,10 @@ _elm_panel_elm_interface_atspi_widget_action_elm_actions_get(Eo *obj EINA_UNUSED /* 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) +ELM_PART_OVERRIDE(elm_panel, ELM_PANEL, Elm_Panel_Data) +ELM_PART_OVERRIDE_CONTENT_SET(elm_panel, ELM_PANEL, Elm_Panel_Data) +ELM_PART_OVERRIDE_CONTENT_GET(elm_panel, ELM_PANEL, Elm_Panel_Data) +ELM_PART_OVERRIDE_CONTENT_UNSET(elm_panel, ELM_PANEL, Elm_Panel_Data) #include "elm_panel_part.eo.c" /* Efl.Part end */ diff --git a/src/lib/elementary/elm_panel_part.eo b/src/lib/elementary/elm_panel_part.eo index 45f6a07a28..a899496cc5 100644 --- a/src/lib/elementary/elm_panel_part.eo +++ b/src/lib/elementary/elm_panel_part.eo @@ -1,9 +1,8 @@ -class Elm.Panel.Part (Efl.Object, Efl.Container) +class Elm.Panel.Part (Efl.Ui.Widget.Part, Efl.Container) { [[Elementary panel internal part class]] - data: Elm_Part_Data; + data: null; implements { - Efl.Object.destructor; Efl.Container.content { get; set; } Efl.Container.content_unset; } diff --git a/src/lib/elementary/elm_part_helper.h b/src/lib/elementary/elm_part_helper.h index 56b352e558..3cd5c5f98b 100644 --- a/src/lib/elementary/elm_part_helper.h +++ b/src/lib/elementary/elm_part_helper.h @@ -3,94 +3,26 @@ #include "efl_ui_layout_part.eo.h" -//#define ELM_PART_HOOK do { ERR("%p:%s [%d]", pd->obj, pd->part, (int) pd->temp); } while(0) +//#define ELM_PART_HOOK do { ERR("%s@%p:%s [%d]", efl_class_name_get(pd->obj), pd->obj, pd->part, (int) pd->temp); } while(0) #define ELM_PART_HOOK do {} while(0) -#define ELM_PART_REF(obj, pd) do { if (!(pd->temp++)) efl_ref(obj); } while(0) +//#define ELM_PART_REF(obj, pd) do { if (!(pd->temp++)) efl_ref(obj); } while(0) #define ELM_PART_UNREF(obj, pd) do { if (pd->temp) { if (!(--pd->temp)) efl_del(obj); } } while(0) #define ELM_PART_RETURN_VAL(a) do { ELM_PART_HOOK; typeof(a) _ret = a; ELM_PART_UNREF(obj, pd); return _ret; } while(0) #define ELM_PART_RETURN_VOID do { ELM_PART_HOOK; ELM_PART_UNREF(obj, pd); return; } while(0) -#define ELM_PART_CALL(a) ({ ELM_PART_REF(obj, pd); a; }) +//#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; + Eina_Tmpstr *part; unsigned char temp; }; // Note: this generic implementation can be improved to support part object // caching or something... -#define ELM_PART_IMPLEMENT_DESTRUCTOR(type, TYPE, typedata, partdata) \ -static EOLIAN void \ -_ ## type ## _part_efl_object_destructor(Eo *obj, partdata *pd) \ -{ \ - ELM_PART_HOOK; \ - free(pd->part); \ - efl_data_xunref(pd->obj, pd->sd, obj); \ - efl_destructor(efl_super(obj, TYPE ## _PART_CLASS)); \ -} \ - -// Main part proxy implementation -#define ELM_PART_IMPLEMENT(type, TYPE, typedata, partdata) \ -ELM_PART_IMPLEMENT_DESTRUCTOR(type, TYPE, typedata, partdata) \ -static EOLIAN Efl_Object * \ -_ ## type ## _efl_part_part(const Eo *obj, typedata *priv EINA_UNUSED, const char *part) \ -{ \ - partdata *pd; \ - Eo *proxy; \ -\ - EINA_SAFETY_ON_NULL_RETURN_VAL(part, NULL); \ - proxy = efl_add(TYPE ## _PART_CLASS, (Eo *) obj); \ - pd = efl_data_scope_get(proxy, TYPE ## _PART_CLASS); \ - if (pd) \ - { \ - pd->obj = (Eo *) obj; \ - pd->sd = efl_data_xref(pd->obj, TYPE ## _CLASS, proxy); \ - pd->part = strdup(part); \ - pd->temp = 1; \ - } \ -\ - return proxy; \ -} - -#define ELM_PART_IMPLEMENT_CONTENT_SET(type, TYPE, typedata, partdata) \ -static EOLIAN Eina_Bool \ -_ ## type ## _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 ## _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 ## _part_efl_container_content_unset(Eo *obj, partdata *pd) \ -{ \ - ELM_PART_RETURN_VAL(_ ## type ## _content_unset(pd->obj, pd->sd, pd->part)); \ -} - -#define ELM_PART_IMPLEMENT_TEXT_SET(type, TYPE, typedata, partdata) \ -static EOLIAN void \ -_ ## type ## _part_efl_text_text_set(Eo *obj EINA_UNUSED, partdata *pd, const char *text) \ -{ \ - _ ## type ## _text_set(pd->obj, pd->sd, pd->part, text); \ -} - -#define ELM_PART_IMPLEMENT_TEXT_GET(type, TYPE, typedata, partdata) \ -static EOLIAN const char * \ -_ ## type ## _part_efl_text_text_get(Eo *obj, partdata *pd) \ -{ \ - ELM_PART_RETURN_VAL(_ ## type ## _text_get(pd->obj, pd->sd, pd->part)); \ -} #define ELM_PART_CONTENT_DEFAULT_SET(type, part) \ static const char * _ ## type ## _default_content_part_get(const Eo *obj EINA_UNUSED, void *sd EINA_UNUSED) { return part; } @@ -104,69 +36,70 @@ _ ## type ## _part_efl_text_text_get(Eo *obj, partdata *pd) \ #define ELM_PART_TEXT_DEFAULT_OPS(type) \ EFL_OBJECT_OP_FUNC(elm_widget_default_text_part_get, _ ## type ## _default_text_part_get) -// For widgets that inherit from something with parts (eg. from Efl.Ui.Layout) -#define ELM_PART_OVERRIDE(type, TYPE, SUPER, typedata, partdata) \ -static EOLIAN Efl_Object * \ -_ ## type ## _efl_part_part(const Eo *obj, typedata *priv EINA_UNUSED, const char *part) \ -{ \ - partdata *pd; \ - Eo *proxy; \ -\ - EINA_SAFETY_ON_NULL_RETURN_VAL(part, NULL); \ - proxy = efl_add(TYPE ## _PART_CLASS, (Eo *) obj); \ - pd = efl_data_scope_get(proxy, SUPER ## _PART_CLASS); \ + +// For any widget that has specific part handling + +#define ELM_PART_OVERRIDE_IMPLEMENT(TYPE) \ + Eo *proxy = efl_add(TYPE ## _PART_CLASS, (Eo *) obj); \ + Elm_Part_Data *pd = efl_data_scope_get(proxy, EFL_UI_WIDGET_PART_CLASS); \ if (pd) \ { \ pd->obj = (Eo *) obj; \ - pd->sd = efl_data_xref(pd->obj, SUPER ## _CLASS, proxy); \ - pd->part = strdup(part); \ + pd->part = eina_tmpstr_add(part); \ pd->temp = 1; \ } \ -\ - return proxy; \ + return proxy; + +#define ELM_PART_OVERRIDE(type, TYPE, typedata) \ +static EOLIAN Efl_Object * \ +_ ## type ## _efl_part_part(const Eo *obj, typedata *priv EINA_UNUSED, const char *part) \ +{ \ + EINA_SAFETY_ON_NULL_RETURN_VAL(part, NULL); \ + ELM_PART_OVERRIDE_IMPLEMENT(TYPE); \ } -#define ELM_PART_OVERRIDE_CONTENT_SET(type, TYPE, SUPER, typedata, partdata) \ +#define ELM_PART_OVERRIDE_CONTENT_SET(type, TYPE, typedata) \ static EOLIAN Eina_Bool \ _ ## type ## _part_efl_container_content_set(Eo *obj, void *_pd EINA_UNUSED, Efl_Gfx *content) \ { \ - partdata *pd = efl_data_scope_get(obj, SUPER ## _PART_CLASS); \ + Elm_Part_Data *pd = efl_data_scope_get(obj, EFL_UI_WIDGET_PART_CLASS); \ typedata *sd = efl_data_scope_get(pd->obj, TYPE ## _CLASS); \ ELM_PART_RETURN_VAL(_ ## type ## _content_set(pd->obj, sd, pd->part, content)); \ } -#define ELM_PART_OVERRIDE_CONTENT_GET(type, TYPE, SUPER, typedata, partdata) \ +#define ELM_PART_OVERRIDE_CONTENT_GET(type, TYPE, typedata) \ static EOLIAN Efl_Gfx * \ _ ## type ## _part_efl_container_content_get(Eo *obj, void *_pd EINA_UNUSED) \ { \ - partdata *pd = efl_data_scope_get(obj, SUPER ## _PART_CLASS); \ + Elm_Part_Data *pd = efl_data_scope_get(obj, EFL_UI_WIDGET_PART_CLASS); \ typedata *sd = efl_data_scope_get(pd->obj, TYPE ## _CLASS); \ ELM_PART_RETURN_VAL(_ ## type ## _content_get(pd->obj, sd, pd->part)); \ } -#define ELM_PART_OVERRIDE_CONTENT_UNSET(type, TYPE, SUPER, typedata, partdata) \ +#define ELM_PART_OVERRIDE_CONTENT_UNSET(type, TYPE, typedata) \ static EOLIAN Efl_Gfx * \ _ ## type ## _part_efl_container_content_unset(Eo *obj, void *_pd EINA_UNUSED) \ { \ - partdata *pd = efl_data_scope_get(obj, SUPER ## _PART_CLASS); \ + Elm_Part_Data *pd = efl_data_scope_get(obj, EFL_UI_WIDGET_PART_CLASS); \ typedata *sd = efl_data_scope_get(pd->obj, TYPE ## _CLASS); \ ELM_PART_RETURN_VAL(_ ## type ## _content_unset(pd->obj, sd, pd->part)); \ } -#define ELM_PART_OVERRIDE_TEXT_SET(type, TYPE, SUPER, typedata, partdata) \ +#define ELM_PART_OVERRIDE_TEXT_SET(type, TYPE, typedata) \ static EOLIAN void \ _ ## type ## _part_efl_text_text_set(Eo *obj, void *_pd EINA_UNUSED, const char *text) \ { \ - partdata *pd = efl_data_scope_get(obj, SUPER ## _PART_CLASS); \ + Elm_Part_Data *pd = efl_data_scope_get(obj, EFL_UI_WIDGET_PART_CLASS); \ typedata *sd = efl_data_scope_get(pd->obj, TYPE ## _CLASS); \ - ELM_PART_CALL(_ ## type ## _text_set(pd->obj, sd, pd->part, text)); \ + _ ## type ## _text_set(pd->obj, sd, pd->part, text); \ + ELM_PART_RETURN_VOID; \ } -#define ELM_PART_OVERRIDE_TEXT_GET(type, TYPE, SUPER, typedata, partdata) \ +#define ELM_PART_OVERRIDE_TEXT_GET(type, TYPE, typedata) \ static EOLIAN const char *\ _ ## type ## _part_efl_text_text_get(Eo *obj, void *_pd EINA_UNUSED) \ { \ - partdata *pd = efl_data_scope_get(obj, SUPER ## _PART_CLASS); \ + Elm_Part_Data *pd = efl_data_scope_get(obj, EFL_UI_WIDGET_PART_CLASS); \ typedata *sd = efl_data_scope_get(pd->obj, TYPE ## _CLASS); \ ELM_PART_RETURN_VAL(_ ## type ## _text_get(pd->obj, sd, pd->part)); \ } diff --git a/src/lib/elementary/elm_scroller.c b/src/lib/elementary/elm_scroller.c index c608b6d8b5..b10b2b516b 100644 --- a/src/lib/elementary/elm_scroller.c +++ b/src/lib/elementary/elm_scroller.c @@ -1475,10 +1475,10 @@ ELM_WIDGET_KEY_DOWN_DEFAULT_IMPLEMENT(elm_scroller, Elm_Scroller_Data) /* Efl.Part begin */ -ELM_PART_OVERRIDE(elm_scroller, ELM_SCROLLER, EFL_UI_LAYOUT, Elm_Scroller_Data, Elm_Part_Data) -ELM_PART_OVERRIDE_CONTENT_SET(elm_scroller, ELM_SCROLLER, EFL_UI_LAYOUT, Elm_Scroller_Data, Elm_Part_Data) -ELM_PART_OVERRIDE_CONTENT_GET(elm_scroller, ELM_SCROLLER, EFL_UI_LAYOUT, Elm_Scroller_Data, Elm_Part_Data) -ELM_PART_OVERRIDE_CONTENT_UNSET(elm_scroller, ELM_SCROLLER, EFL_UI_LAYOUT, Elm_Scroller_Data, Elm_Part_Data) +ELM_PART_OVERRIDE(elm_scroller, ELM_SCROLLER, Elm_Scroller_Data) +ELM_PART_OVERRIDE_CONTENT_SET(elm_scroller, ELM_SCROLLER, Elm_Scroller_Data) +ELM_PART_OVERRIDE_CONTENT_GET(elm_scroller, ELM_SCROLLER, Elm_Scroller_Data) +ELM_PART_OVERRIDE_CONTENT_UNSET(elm_scroller, ELM_SCROLLER, Elm_Scroller_Data) // FIXME: should be "content" but "default" was legacy API ELM_PART_CONTENT_DEFAULT_SET(elm_scroller, "default") #include "elm_scroller_part.eo.c" diff --git a/src/lib/elementary/elm_widget.c b/src/lib/elementary/elm_widget.c index 841186151a..0ac956eed6 100644 --- a/src/lib/elementary/elm_widget.c +++ b/src/lib/elementary/elm_widget.c @@ -6636,6 +6636,42 @@ elm_widget_signal_callback_del(Eo *obj, const char *emission, const char *source } +/* Efl.Part implementation */ + +static EOLIAN Efl_Object * +_elm_widget_efl_part_part(const Eo *obj, Elm_Widget_Smart_Data *wd EINA_UNUSED, const char *part) +{ + Elm_Part_Data *pd; + Eo *proxy; + + EINA_SAFETY_ON_NULL_RETURN_VAL(part, NULL); + + // Generic parts for every kind of widget + proxy = efl_add(EFL_UI_WIDGET_PART_CLASS, (Eo *) obj); + pd = efl_data_scope_get(proxy, EFL_UI_WIDGET_PART_CLASS); + if (pd) + { + pd->obj = (Eo *) obj; + pd->part = eina_tmpstr_add(part); + pd->temp = 1; + } + + return proxy; +} + +static EOLIAN void \ +_efl_ui_widget_part_efl_object_destructor(Eo *obj, Elm_Part_Data *pd) +{ + ELM_PART_HOOK; + eina_tmpstr_del(pd->part); + efl_destructor(efl_super(obj, EFL_UI_WIDGET_PART_CLASS)); +} + +#include "efl_ui_widget_part.eo.c" + +/* Efl.Part end */ + + /* Internal EO APIs and hidden overrides */ EFL_FUNC_BODY_CONST(elm_widget_default_content_part_get, const char *, NULL) diff --git a/src/lib/elementary/elm_widget.eo b/src/lib/elementary/elm_widget.eo index babe00c17b..53638c95f1 100644 --- a/src/lib/elementary/elm_widget.eo +++ b/src/lib/elementary/elm_widget.eo @@ -18,7 +18,7 @@ struct Elm.Widget.Focus_State { } abstract Elm.Widget (Efl.Canvas.Group, Elm.Interface.Atspi_Accessible, - Efl.Access.Component, Efl.Ui.Focus.User, + Efl.Access.Component, Efl.Ui.Focus.User, Efl.Part, Efl.Ui.Focus.Object, Efl.Ui.Base, Efl.Ui.Cursor) { [[Elementary widget abstract class]] @@ -860,6 +860,7 @@ abstract Elm.Widget (Efl.Canvas.Group, Elm.Interface.Atspi_Accessible, Efl.Ui.Cursor.cursor { get; set; } Efl.Ui.Cursor.cursor_style { get; set; } Efl.Ui.Cursor.cursor_theme_search_enabled { get; set; } + Efl.Part.part; [[Returns @Efl.Ui.Widget.Part.]] } events { moved; [[Called when widget moved]]