jpeg pushed a commit to branch master. http://git.enlightenment.org/core/efl.git/commit/?id=a2729d119d941090eed0148074f6da5eb638b720
commit a2729d119d941090eed0148074f6da5eb638b720 Author: Jean-Philippe Andre <jp.an...@samsung.com> Date: Wed Aug 30 18:14:29 2017 +0900 widget: Remove part_text from EO It should be implemented as a efl_part() API. For now I've only done a quick hack, as the only overrides were: - notify: already a Part implementation. Also it turns out the default theme does not even have any text part in the notify group. - combobox: not a Part implementation, but also very badly defined wrt. parts in general. efl_part() is handled by the parent class (button) which makes it tricky to override just for one function. With this patch I'm trying to keep the same behaviour as earlier (where efl_part() is used for layouts and there is a special path for combobox). Ref T5363 --- src/lib/elementary/elc_combobox.c | 16 ++++++++++------ src/lib/elementary/elm_combobox.eo | 2 +- src/lib/elementary/elm_notify.c | 12 ++++++++---- src/lib/elementary/elm_notify.eo | 1 - src/lib/elementary/elm_notify_internal_part.eo | 3 ++- src/lib/elementary/elm_priv.h | 4 ++++ src/lib/elementary/elm_widget.c | 26 ++++++++++++++++---------- src/lib/elementary/elm_widget.eo | 9 --------- 8 files changed, 41 insertions(+), 32 deletions(-) diff --git a/src/lib/elementary/elc_combobox.c b/src/lib/elementary/elc_combobox.c index 7a7849924c..0d8e36eb25 100644 --- a/src/lib/elementary/elc_combobox.c +++ b/src/lib/elementary/elc_combobox.c @@ -521,17 +521,21 @@ _elm_combobox_elm_genlist_filter_set(Eo *obj EINA_UNUSED, Elm_Combobox_Data *pd, elm_obj_genlist_filter_set(pd->genlist, key); } -EOLIAN void -_elm_combobox_elm_widget_part_text_set(Eo *obj EINA_UNUSED, Elm_Combobox_Data *pd, - const char * part, const char *label) +// FIXME: Combobox part API is badly defined. Efl.Part should be reimplemented +// properly, but this will be tricky: how to set "guide" on the "entry" part? +void +_elm_combobox_part_text_set(Eo *obj, const char * part, const char *label) { + Elm_Combobox_Data *pd = efl_data_scope_safe_get(obj, MY_CLASS); + if (!pd) return; elm_object_part_text_set(pd->entry, part, label); } -EOLIAN const char * -_elm_combobox_elm_widget_part_text_get(Eo *obj EINA_UNUSED, Elm_Combobox_Data *pd, - const char * part) +const char * +_elm_combobox_part_text_get(const Eo *obj, const char *part) { + Elm_Combobox_Data *pd = efl_data_scope_safe_get(obj, MY_CLASS); + if (!pd) return NULL; return elm_object_part_text_get(pd->entry, part); } diff --git a/src/lib/elementary/elm_combobox.eo b/src/lib/elementary/elm_combobox.eo index d4633a11d5..a0f106bd41 100644 --- a/src/lib/elementary/elm_combobox.eo +++ b/src/lib/elementary/elm_combobox.eo @@ -39,13 +39,13 @@ class Elm.Combobox (Efl.Ui.Button, Efl.Ui.Selectable, Efl.Object.constructor; Efl.Gfx.visible { set; } Efl.Gfx.size { set; } - Elm.Widget.part_text { get; set; } Elm.Widget.theme_apply; Elm.Widget.translate; Elm.Widget.widget_event; Efl.Ui.Autorepeat.autorepeat_supported { get; } Elm.Genlist.filter { set; } Elm.Interface.Atspi_Widget_Action.elm_actions { get; } + //Efl.Part.part; // TODO? } events { dismissed; [[Called when combobox was dismissed]] diff --git a/src/lib/elementary/elm_notify.c b/src/lib/elementary/elm_notify.c index 8c4958b4c7..3a101e1a93 100644 --- a/src/lib/elementary/elm_notify.c +++ b/src/lib/elementary/elm_notify.c @@ -160,14 +160,16 @@ _elm_notify_elm_widget_theme_apply(Eo *obj, Elm_Notify_Data *sd) return int_ret; } -EOLIAN static void -_elm_notify_elm_widget_part_text_set(Eo *obj EINA_UNUSED, Elm_Notify_Data *sd, const char *part, const char *label) +/* Legacy compat. Note that notify has no text parts in the default theme... */ +static void +_elm_notify_text_set(Eo *obj EINA_UNUSED, Elm_Notify_Data *sd, const char *part, const char *label) { edje_object_part_text_set(sd->notify, part, label); } -EOLIAN static const char* -_elm_notify_elm_widget_part_text_get(Eo *obj EINA_UNUSED, Elm_Notify_Data *sd, const char *part) +/* Legacy compat. Note that notify has no text parts in the default theme... */ +static const char* +_elm_notify_text_get(Eo *obj EINA_UNUSED, Elm_Notify_Data *sd, const char *part) { return edje_object_part_text_get(sd->notify, part); } @@ -739,6 +741,8 @@ _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) diff --git a/src/lib/elementary/elm_notify.eo b/src/lib/elementary/elm_notify.eo index c95468b5bc..3434989e1d 100644 --- a/src/lib/elementary/elm_notify.eo +++ b/src/lib/elementary/elm_notify.eo @@ -90,7 +90,6 @@ class Elm.Notify (Elm.Widget, Efl.Container, Efl.Part) Elm.Widget.focus_next_manager_is; Elm.Widget.focus_next; Elm.Widget.widget_sub_object_del; - Elm.Widget.part_text { get; set; } Efl.Container.content { get; set; } Efl.Container.content_unset; Efl.Part.part; diff --git a/src/lib/elementary/elm_notify_internal_part.eo b/src/lib/elementary/elm_notify_internal_part.eo index 998b483f30..7970cd9642 100644 --- a/src/lib/elementary/elm_notify_internal_part.eo +++ b/src/lib/elementary/elm_notify_internal_part.eo @@ -1,9 +1,10 @@ -class Elm.Notify.Internal.Part (Efl.Object, Efl.Container) +class Elm.Notify.Internal.Part (Efl.Object, Efl.Container, Efl.Text) { [[Elementary notification internel part class]] data: Elm_Part_Data; 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_priv.h b/src/lib/elementary/elm_priv.h index 8bedeb0819..6291b55144 100644 --- a/src/lib/elementary/elm_priv.h +++ b/src/lib/elementary/elm_priv.h @@ -547,6 +547,10 @@ void _elm_win_wl_cursor_set(Evas_Object *obj, const char *cursor void _efl_ui_focus_manager_redirect_events_del(Efl_Ui_Focus_Manager *manager, Eo *obj); void _efl_ui_focus_manager_redirect_events_add(Efl_Ui_Focus_Manager *manager, Eo *obj); +/* Combobox: no proper support for Efl.Part API yet. */ +void _elm_combobox_part_text_set(Eo *obj, const char * part, const char *label); +const char *_elm_combobox_part_text_get(const Eo *obj, const char *part); + /* DEPRECATED, will be removed on next release */ void _elm_icon_signal_emit(Evas_Object *obj, const char *emission, diff --git a/src/lib/elementary/elm_widget.c b/src/lib/elementary/elm_widget.c index 25c64b71a4..a4160ffe28 100644 --- a/src/lib/elementary/elm_widget.c +++ b/src/lib/elementary/elm_widget.c @@ -3632,17 +3632,23 @@ elm_widget_theme_set(Evas_Object *obj, Elm_Theme *th) elm_obj_widget_theme_set(obj, th); } -EOLIAN static void -_elm_widget_part_text_set(Eo *obj, Elm_Widget_Smart_Data *_pd EINA_UNUSED, const char *part, const char *label) +EAPI void +elm_widget_part_text_set(Eo *obj, const char *part, const char *label) { - if (evas_object_smart_type_check(obj, "elm_layout")) + /* legacy support: combobox was special (internal entry is text object). */ + if (efl_isa(obj, ELM_COMBOBOX_CLASS)) + _elm_combobox_part_text_set(obj, part, label); + else if (efl_isa(obj, EFL_UI_LAYOUT_CLASS)) elm_layout_text_set(obj, part, label); } -EOLIAN static const char* -_elm_widget_part_text_get(Eo *obj, Elm_Widget_Smart_Data *_pd EINA_UNUSED, const char *part) +EAPI const char* +elm_widget_part_text_get(const Eo *obj, const char *part) { - if (evas_object_smart_type_check(obj, "elm_layout")) + /* legacy support: combobox was special (internal entry is text object). */ + if (efl_isa(obj, ELM_COMBOBOX_CLASS)) + return _elm_combobox_part_text_get(obj, part); + else if (efl_isa(obj, EFL_UI_LAYOUT_CLASS)) return elm_layout_text_get(obj, part); return NULL; @@ -3729,7 +3735,7 @@ _elm_widget_domain_translatable_part_text_set(Eo *obj, Elm_Widget_Smart_Data *sd } sd->on_translate = EINA_TRUE; - elm_obj_widget_part_text_set(obj, part, label); + elm_widget_part_text_set(obj, part, label); sd->on_translate = EINA_FALSE; } @@ -3755,7 +3761,7 @@ _elm_widget_domain_part_text_translatable_set(Eo *obj, Elm_Widget_Smart_Data *sd if (!ts->domain) ts->domain = eina_stringshare_add(domain); else eina_stringshare_replace(&ts->domain, domain); - text = elm_obj_widget_part_text_get(obj, part); + text = elm_widget_part_text_get(obj, part); if (!text || !text[0]) return; if (!ts->string) ts->string = eina_stringshare_add(text); @@ -3765,7 +3771,7 @@ _elm_widget_domain_part_text_translatable_set(Eo *obj, Elm_Widget_Smart_Data *sd text = dgettext(domain, text); #endif sd->on_translate = EINA_TRUE; - elm_obj_widget_part_text_set(obj, part, text); + elm_widget_part_text_set(obj, part, text); sd->on_translate = EINA_FALSE; } @@ -3825,7 +3831,7 @@ _elm_widget_translate(Eo *obj EINA_UNUSED, Elm_Widget_Smart_Data *_pd EINA_UNUSE if (!ts->string) continue; const char *s = dgettext(ts->domain, ts->string); sd->on_translate = EINA_TRUE; - elm_obj_widget_part_text_set(obj, ts->id, s); + elm_widget_part_text_set(obj, ts->id, s); sd->on_translate = EINA_FALSE; } #endif diff --git a/src/lib/elementary/elm_widget.eo b/src/lib/elementary/elm_widget.eo index f5a5e6edfa..64560f1695 100644 --- a/src/lib/elementary/elm_widget.eo +++ b/src/lib/elementary/elm_widget.eo @@ -293,15 +293,6 @@ abstract Elm.Widget (Efl.Canvas.Group, Elm.Interface.Atspi_Accessible, translatable: bool; [[$true if translatable, $false otherwise]] } } - @property part_text { - [[Part text property]] - keys { - part: string; [[Part name]] - } - values { - label: string; [[Label]] - } - } translatable_part_text_get @const { [[Get translatable part text]] return: string; [[Part text]] --