diff options
author | Lukasz Stanislawski <lukasz.stanislawski@gmail.com> | 2016-11-14 11:10:57 -0800 |
---|---|---|
committer | Cedric BAIL <cedric@osg.samsung.com> | 2016-11-14 11:10:59 -0800 |
commit | 93b509d66450418e66cf36ca06add65100f3afb2 (patch) | |
tree | c77b241cd0ce8eceed5c68d2ab69aa4f4375fa9f | |
parent | 883d41f0062b947c1d8793b5c6f9c586e20f484b (diff) | |
download | efl-93b509d66450418e66cf36ca06add65100f3afb2.tar.gz |
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 <cedric@osg.samsung.com>
-rw-r--r-- | src/lib/elementary/elm_interface_atspi_accessible.c | 11 | ||||
-rw-r--r-- | src/lib/elementary/elm_interface_atspi_accessible.eo | 5 | ||||
-rw-r--r-- | 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 22afbaabeb..09ddea8ffe 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 15a0c5ad10..5c5df21882 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 f7f2def23f..5abcebf8e3 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; |