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;
 

-- 


Reply via email to