efl_ui_radio: remove some legacy code
authorSungtaek Hong <sth253.hong@samsung.com>
Wed, 1 Nov 2017 17:15:48 +0000 (10:15 -0700)
committerCedric BAIL <cedric@osg.samsung.com>
Wed, 1 Nov 2017 17:34:45 +0000 (10:34 -0700)
Summary:
This uses constructor/destructor instead of group_add/group_del.

Note: finalize can't be used for theme loading as any action done
inside
efl_add(...) would be lost (eg. part text set).

Test Plan: 1) run elementary_test -to radio

Reviewers: jpeg, woohyun, cedric

Subscribers: akanad

Differential Revision: https://phab.enlightenment.org/D5404

Signed-off-by: Cedric BAIL <cedric@osg.samsung.com>
src/lib/elementary/efl_ui_check.c
src/lib/elementary/efl_ui_radio.c
src/lib/elementary/efl_ui_radio.eo

index 0cce3e3..6a23310 100644 (file)
@@ -323,7 +323,6 @@ _efl_ui_check_efl_object_constructor(Eo *obj, Efl_Ui_Check_Data *pd EINA_UNUSED)
    obj = efl_constructor(efl_super(obj, MY_CLASS));
    efl_canvas_object_type_set(obj, MY_CLASS_NAME_LEGACY);
    evas_object_smart_callbacks_descriptions_set(obj, _smart_callbacks);
-   elm_widget_sub_object_parent_add(obj);
 
    if (!elm_layout_theme_set(obj, "check", "base", elm_widget_style_get(obj)))
      CRI("Failed to set layout!");
index da7521a..c2edeb7 100644 (file)
@@ -26,7 +26,7 @@ static const Elm_Layout_Part_Alias_Description _text_aliases[] =
 
 static const char SIG_CHANGED[] = "changed";
 static const Evas_Smart_Cb_Description _smart_callbacks[] = {
-   {SIG_CHANGED, ""},
+   {SIG_CHANGED, ""}, /**< handled by efl_ui_check */
    {SIG_WIDGET_LANG_CHANGED, ""}, /**< handled by elm_widget */
    {SIG_WIDGET_ACCESS_CHANGED, ""}, /**< handled by elm_widget */
    {SIG_LAYOUT_FOCUSED, ""}, /**< handled by elm_layout */
@@ -202,61 +202,50 @@ _access_state_cb(void *data EINA_UNUSED, Evas_Object *obj)
    return strdup(E_("State: Off"));
 }
 
-EOLIAN static void
-_efl_ui_radio_efl_canvas_group_group_add(Eo *obj, Efl_Ui_Radio_Data *priv)
+EAPI Evas_Object *
+elm_radio_add(Evas_Object *parent)
 {
-   ELM_WIDGET_DATA_GET_OR_RETURN(obj, wd);
+   EINA_SAFETY_ON_NULL_RETURN_VAL(parent, NULL);
+   return efl_add(MY_CLASS, parent, efl_canvas_object_legacy_ctor(efl_added));
+}
 
-   efl_canvas_group_add(efl_super(obj, EFL_UI_CHECK_CLASS));
-   elm_widget_sub_object_parent_add(obj);
+EOLIAN static Eo *
+_efl_ui_radio_efl_object_constructor(Eo *obj, Efl_Ui_Radio_Data *pd)
+{
+   obj = efl_constructor(efl_super(obj, MY_CLASS));
+   efl_canvas_object_type_set(obj, MY_CLASS_NAME_LEGACY);
+   evas_object_smart_callbacks_descriptions_set(obj, _smart_callbacks);
 
    if (!elm_layout_theme_set(obj, "radio", "base", elm_widget_style_get(obj)))
      CRI("Failed to set layout!");
 
+   ELM_WIDGET_DATA_GET_OR_RETURN(obj, wd, NULL);
    elm_layout_signal_callback_add
      (obj, "elm,action,radio,toggle", "*", _radio_on_cb, obj);
 
-   priv->group = calloc(1, sizeof(Group));
-   priv->group->radios = eina_list_append(priv->group->radios, obj);
-
-   elm_widget_can_focus_set(obj, EINA_TRUE);
+   pd->group = calloc(1, sizeof(Group));
+   pd->group->radios = eina_list_append(pd->group->radios, obj);
 
    elm_layout_sizing_eval(obj);
 
-   _elm_access_object_register(obj, wd->resize_obj);
+   efl_access_role_set(obj, EFL_ACCESS_ROLE_RADIO_BUTTON);
    _elm_access_text_set
      (_elm_access_info_get(obj), ELM_ACCESS_TYPE, E_("Radio"));
    _elm_access_callback_set
      (_elm_access_info_get(obj), ELM_ACCESS_INFO, _access_info_cb, obj);
    _elm_access_callback_set
      (_elm_access_info_get(obj), ELM_ACCESS_STATE, _access_state_cb, obj);
-}
 
-EOLIAN static void
-_efl_ui_radio_efl_canvas_group_group_del(Eo *obj, Efl_Ui_Radio_Data *sd)
-{
-   sd->group->radios = eina_list_remove(sd->group->radios, obj);
-   if (!sd->group->radios) free(sd->group);
-
-   efl_canvas_group_del(efl_super(obj, EFL_UI_CHECK_CLASS));
-}
-
-EAPI Evas_Object *
-elm_radio_add(Evas_Object *parent)
-{
-   EINA_SAFETY_ON_NULL_RETURN_VAL(parent, NULL);
-   return efl_add(MY_CLASS, parent, efl_canvas_object_legacy_ctor(efl_added));
+   return obj;
 }
 
-EOLIAN static Eo *
-_efl_ui_radio_efl_object_constructor(Eo *obj, Efl_Ui_Radio_Data *_pd EINA_UNUSED)
+EOLIAN static void
+_efl_ui_radio_efl_object_destructor(Eo *obj EINA_UNUSED, Efl_Ui_Radio_Data *pd)
 {
-   obj = efl_constructor(efl_super(obj, MY_CLASS));
-   efl_canvas_object_type_set(obj, MY_CLASS_NAME_LEGACY);
-   evas_object_smart_callbacks_descriptions_set(obj, _smart_callbacks);
-   efl_access_role_set(obj, EFL_ACCESS_ROLE_RADIO_BUTTON);
+   pd->group->radios = eina_list_remove(pd->group->radios, obj);
+   if (!pd->group->radios) free(pd->group);
 
-   return obj;
+   efl_destructor(efl_super(obj, MY_CLASS));
 }
 
 EOLIAN static void
@@ -392,7 +381,6 @@ ELM_WIDGET_KEY_DOWN_DEFAULT_IMPLEMENT(efl_ui_radio, Efl_Ui_Radio_Data)
 ELM_LAYOUT_TEXT_ALIASES_IMPLEMENT(MY_CLASS_PFX)
 
 #define EFL_UI_RADIO_EXTRA_OPS \
-   EFL_CANVAS_GROUP_ADD_DEL_OPS(efl_ui_radio), \
    ELM_LAYOUT_TEXT_ALIASES_OPS(MY_CLASS_PFX)
 
 #include "efl_ui_radio.eo.c"
index 397c1fb..d3a3bfd 100644 (file)
@@ -77,6 +77,7 @@ class Efl.Ui.Radio (Efl.Ui.Check, Elm.Interface.Atspi_Widget_Action)
    implements {
       class.constructor;
       Efl.Object.constructor;
+      Efl.Object.destructor;
       Elm.Widget.theme_apply;
       Elm.Widget.on_access_activate;
       Elm.Widget.widget_event;