cedric pushed a commit to branch master. http://git.enlightenment.org/core/efl.git/commit/?id=93b509d66450418e66cf36ca06add65100f3afb2
commit 93b509d66450418e66cf36ca06add65100f3afb2 Author: Lukasz Stanislawski <lukasz.stanislaw...@gmail.com> Date: Mon Nov 14 11:10:57 2016 -0800 elementary: implement destructor in atspi mixin Summary: Make atspi mixin inherit from Efl.Interface class and add Efl.Object as it extensions class to gain acccess to destructor function. This allow to better share code between implementations and avoid possible mistakes during accessibilityt implementations. Reviewers: cedric, jpeg, raster, kimcinoo Subscribers: cedric, jpeg Differential Revision: https://phab.enlightenment.org/D4393 Signed-off-by: Cedric BAIL <ced...@osg.samsung.com> --- src/lib/elementary/elm_interface_atspi_accessible.c | 11 +++++++++++ src/lib/elementary/elm_interface_atspi_accessible.eo | 5 ++++- src/lib/elementary/elm_widget.c | 9 --------- 3 files changed, 15 insertions(+), 10 deletions(-) diff --git a/src/lib/elementary/elm_interface_atspi_accessible.c b/src/lib/elementary/elm_interface_atspi_accessible.c index 22afbaa..09ddea8 100644 --- a/src/lib/elementary/elm_interface_atspi_accessible.c +++ b/src/lib/elementary/elm_interface_atspi_accessible.c @@ -598,4 +598,15 @@ _elm_interface_atspi_accessible_type_set(Eo *obj, Elm_Interface_Atspi_Accessible pd->type = val; } +EOLIAN void +_elm_interface_atspi_accessible_efl_object_destructor(Eo *obj, Elm_Interface_Atspi_Accessible_Data *pd) +{ + eina_stringshare_del(pd->name); + eina_stringshare_del(pd->description); + eina_stringshare_del(pd->translation_domain); + elm_atspi_relation_set_free(pd->relations); + + efl_destructor(efl_super(obj, ELM_INTERFACE_ATSPI_ACCESSIBLE_MIXIN)); +} + #include "elm_interface_atspi_accessible.eo.c" diff --git a/src/lib/elementary/elm_interface_atspi_accessible.eo b/src/lib/elementary/elm_interface_atspi_accessible.eo index 15a0c5a..5c5df21 100644 --- a/src/lib/elementary/elm_interface_atspi_accessible.eo +++ b/src/lib/elementary/elm_interface_atspi_accessible.eo @@ -235,7 +235,7 @@ struct Elm.Atspi.Relation type Elm.Atspi.Relation_Set: list<ptr(Elm.Atspi.Relation)>; [[Elementary AT-SPI relation set type]] -mixin Elm.Interface.Atspi_Accessible () +mixin Elm.Interface.Atspi_Accessible (Efl.Interface, Efl.Object) { [[AT-SPI accessible mixin]] eo_prefix: elm_interface_atspi_accessible; @@ -432,6 +432,9 @@ mixin Elm.Interface.Atspi_Accessible () } } } + implements { + Efl.Object.destructor; + } events { property,changed: string; [[Called when roperty has changed]] children,changed: Elm.Atspi.Event.Children_Changed.Data; [[Called when children have changed]] diff --git a/src/lib/elementary/elm_widget.c b/src/lib/elementary/elm_widget.c index f7f2def..5abcebf 100644 --- a/src/lib/elementary/elm_widget.c +++ b/src/lib/elementary/elm_widget.c @@ -4595,11 +4595,6 @@ _elm_widget_item_efl_object_destructor(Eo *eo_item, Elm_Widget_Item_Data *item) } eina_hash_free(item->labels); - elm_interface_atspi_accessible_description_set(eo_item, NULL); - elm_interface_atspi_accessible_name_set(eo_item, NULL); - elm_interface_atspi_accessible_translation_domain_set(eo_item, NULL); - elm_interface_atspi_accessible_relationships_clear(eo_item); - elm_interface_atspi_accessible_removed(eo_item); EINA_MAGIC_SET(item, EINA_MAGIC_NONE); @@ -5853,10 +5848,6 @@ EOLIAN static void _elm_widget_efl_object_destructor(Eo *obj, Elm_Widget_Smart_Data *sd EINA_UNUSED) { sd->on_destroy = EINA_TRUE; - elm_interface_atspi_accessible_description_set(obj, NULL); - elm_interface_atspi_accessible_name_set(obj, NULL); - elm_interface_atspi_accessible_translation_domain_set(obj, NULL); - elm_interface_atspi_accessible_relationships_clear(obj); efl_destructor(efl_super(obj, ELM_WIDGET_CLASS)); sd->on_destroy = EINA_FALSE; --