diff options
5 files changed, 48 insertions, 28 deletions
diff --git a/apptray-widget-app/inc/apptray_wgt_app_accessibility_utils.h b/apptray-widget-app/inc/apptray_wgt_app_accessibility_utils.h index 8404d41..468f3db 100644 --- a/apptray-widget-app/inc/apptray_wgt_app_accessibility_utils.h +++ b/apptray-widget-app/inc/apptray_wgt_app_accessibility_utils.h @@ -32,9 +32,11 @@ Evas_Object *apptray_wgt_app_au_register_access_object(Evas_Object *parent, /** * @brief Unregisters accessible object - * @param[in] obj Accessible object to unregister + * @param[in] ly Layout from which part for creation accessible object was taken + * @param[in] ly_part Part of layout for creation accessible object */ -void apptray_wgt_app_au_unregister_access_object(Evas_Object *obj); +void apptray_wgt_app_au_unregister_access_object(Evas_Object *ly, + const char *ly_part); /** * @brief Registers fake first accessible object diff --git a/apptray-widget-app/src/apptray_wgt_app_accessibility_utils.c b/apptray-widget-app/src/apptray_wgt_app_accessibility_utils.c index b518c85..4929c0d 100644 --- a/apptray-widget-app/src/apptray_wgt_app_accessibility_utils.c +++ b/apptray-widget-app/src/apptray_wgt_app_accessibility_utils.c @@ -37,6 +37,14 @@ static Evas_Object *_register_access_object(Evas_Object *parent, return ao; } +static void _unregister_access_object(Evas_Object *ly, + const char *ly_part) +{ + Evas_Object *po = (Evas_Object *)edje_object_part_object_get( + elm_layout_edje_get(ly), ly_part); + elm_access_object_unregister(po); +} + Evas_Object *apptray_wgt_app_au_register_access_object(Evas_Object *parent, Evas_Object *ly, const char *ly_part) { @@ -47,11 +55,13 @@ Evas_Object *apptray_wgt_app_au_register_access_object(Evas_Object *parent, return _register_access_object(parent, ly, ly_part); } -void apptray_wgt_app_au_unregister_access_object(Evas_Object *obj) +void apptray_wgt_app_au_unregister_access_object(Evas_Object *ly, + const char *ly_part) { - ret_if(!obj); + ret_if(!ly); + ret_if(!ly_part); - elm_access_object_unregister(obj); + _unregister_access_object(ly, ly_part); } Evas_Object *apptray_wgt_app_au_register_fake_access_object( diff --git a/apptray-widget/inc/apptray_widget_accessibility_utils.h b/apptray-widget/inc/apptray_widget_accessibility_utils.h index 1d981a2..a31d30d 100644 --- a/apptray-widget/inc/apptray_widget_accessibility_utils.h +++ b/apptray-widget/inc/apptray_widget_accessibility_utils.h @@ -26,12 +26,15 @@ * @param[in] ly_part Part of layout for creation accessible object * @return Accessible object on success or NULL otherwise */ -Evas_Object *apptray_wgt_au_register_access_object(Evas_Object *parent, Evas_Object *ly, const char *ly_part); +Evas_Object *apptray_wgt_au_register_access_object(Evas_Object *parent, + Evas_Object *ly, const char *ly_part); /** * @brief Unregisters accessible object - * @param[in] obj Accessible object to unregister + * @param[in] ly Layout from which part for creation accessible object was taken + * @param[in] ly_part Part of layout for creation accessible object */ -void apptray_wgt_au_unregister_access_object(Evas_Object *obj); +void apptray_wgt_au_unregister_access_object(Evas_Object *ly, + const char *ly_part); #endif /* __APPTRAY_WIDGET_ACCESSIBILITY_UTILS_H__ */ diff --git a/apptray-widget/src/apptray_widget.c b/apptray-widget/src/apptray_widget.c index c45b297..f6ad857 100755 --- a/apptray-widget/src/apptray_widget.c +++ b/apptray-widget/src/apptray_widget.c @@ -64,6 +64,7 @@ struct _instance { Evas_Object *win; Evas_Object *bg; Evas_Object *layout; + Evas_Object *add_apps_ly; struct _slot slot[ATW_SLOTS_MAX_COUNT]; char *content_app_list[ATW_SLOTS_MAX_COUNT]; bundle *content; @@ -158,8 +159,7 @@ static void _update_slot_access_object_info(_slot_h slot); static Eina_Bool _slot_access_object_activate_cb(void *data, Evas_Object *obj, Elm_Access_Action_Info *action_info); -static void _create_add_apps_layout_access_object(_instance_h instance, - Evas_Object *layout); +static void _create_add_apps_layout_access_object(_instance_h instance); static void _destroy_add_apps_layout_access_object(_instance_h instance); static Eina_Bool _add_apps_access_object_activate_cb(void *data, Evas_Object *obj, Elm_Access_Action_Info *action_info); @@ -657,10 +657,8 @@ static void _reset_slot(_instance_h instance, int index) snprintf(index_str, sizeof(index_str), "slot_%d", index + 1); elm_object_part_content_unset(instance->layout, index_str); - if (instance->slot[index].ao) { - apptray_wgt_au_unregister_access_object(instance->slot[index].ao); - instance->slot[index].ao = NULL; - } + apptray_wgt_au_unregister_access_object(instance->slot[index].eo, "ao_icon"); + instance->slot[index].ao = NULL; DEL_EVAS_OBJECT(instance->slot[index].eo); _EXIT; @@ -835,13 +833,11 @@ static Eina_Bool _add_apps_access_object_activate_cb(void *data, /** * @brief Creates Add application access object * @param[in] instance Instance handle - * @param[in] layout Access object parent */ -static void _create_add_apps_layout_access_object(_instance_h instance, - Evas_Object *layout) +static void _create_add_apps_layout_access_object(_instance_h instance) { Evas_Object *ao = apptray_wgt_au_register_access_object(instance->layout, - layout, "ao_icon"); + instance->add_apps_ly, "ao_icon"); ret_if(!ao); elm_atspi_accessible_translation_domain_set(ao, ATW_DOMAIN); @@ -861,11 +857,11 @@ static void _create_add_apps_layout_access_object(_instance_h instance, */ static void _destroy_add_apps_layout_access_object(_instance_h instance) { - if (!instance->ao_add_app) { + if (!instance->add_apps_ly) { return; } - apptray_wgt_au_unregister_access_object(instance->ao_add_app); + apptray_wgt_au_unregister_access_object(instance->add_apps_ly, "ao_icon"); instance->ao_add_app = NULL; } @@ -902,7 +898,9 @@ static void _create_add_apps_layout(_instance_h instance) elm_object_part_content_set(instance->layout, "add_apps", eo); evas_object_show(eo); - _create_add_apps_layout_access_object(instance, eo); + instance->add_apps_ly = eo; + + _create_add_apps_layout_access_object(instance); _update_add_apps_access_object_info(instance); } @@ -912,12 +910,9 @@ static void _create_add_apps_layout(_instance_h instance) */ static void _destroy_add_apps_layout(_instance_h instance) { - Evas_Object *eo = NULL; - _destroy_add_apps_layout_access_object(instance); - eo = elm_object_part_content_unset(instance->layout, "add_apps"); - DEL_EVAS_OBJECT(eo); + DEL_EVAS_OBJECT(instance->add_apps_ly); } /** diff --git a/apptray-widget/src/apptray_widget_accessibility_utils.c b/apptray-widget/src/apptray_widget_accessibility_utils.c index 71cb08d..a5c2ca9 100644 --- a/apptray-widget/src/apptray_widget_accessibility_utils.c +++ b/apptray-widget/src/apptray_widget_accessibility_utils.c @@ -33,6 +33,14 @@ static Evas_Object *_register_access_object(Evas_Object *parent, return ao; } +static void _unregister_access_object(Evas_Object *ly, + const char *ly_part) +{ + Evas_Object *po = (Evas_Object *)edje_object_part_object_get( + elm_layout_edje_get(ly), ly_part); + elm_access_object_unregister(po); +} + Evas_Object *apptray_wgt_au_register_access_object(Evas_Object *parent, Evas_Object *ly, const char *ly_part) { @@ -43,9 +51,11 @@ Evas_Object *apptray_wgt_au_register_access_object(Evas_Object *parent, return _register_access_object(parent, ly, ly_part); } -void apptray_wgt_au_unregister_access_object(Evas_Object *obj) +void apptray_wgt_au_unregister_access_object(Evas_Object *ly, + const char *ly_part) { - ret_if(!obj); + ret_if(!ly); + ret_if(!ly_part); - elm_access_object_unregister(obj); + _unregister_access_object(ly, ly_part); } |