TizenRefApp-9546 Wrong focus on Add app shortcuts screen 15/156615/1
authorIgor Olshevskyi <i.olshevskyi@samsung.com>
Thu, 19 Oct 2017 06:52:28 +0000 (09:52 +0300)
committerIgor Olshevskyi <i.olshevskyi@samsung.com>
Thu, 19 Oct 2017 06:52:28 +0000 (09:52 +0300)
Change-Id: Ibeea40339b3590ec6dec347f2341c33a7062aeb0

apptray-widget-app/inc/apptray_wgt_app_accessibility_utils.h
apptray-widget-app/src/apptray_wgt_app_accessibility_utils.c
apptray-widget/inc/apptray_widget_accessibility_utils.h
apptray-widget/src/apptray_widget.c
apptray-widget/src/apptray_widget_accessibility_utils.c

index 8404d4143913df0cea4e742802c662ab7b7eac0f..468f3dbd952b504f708af8827525803c449e2848 100644 (file)
@@ -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
index b518c852328dad5885185e4bebf5af99d4615c20..4929c0daeda6c35d0ef65b96a00a371b37c5a6f0 100644 (file)
@@ -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(
index 1d981a2551d17fba43bc5218d791c2eae39577f5..a31d30de80ee48272e3c5c056003103c22c1a46d 100644 (file)
  * @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__ */
index c45b2975e98e72bb29bf28ea02ccd6fd6de91c36..f6ad8572f374964f542734091addcd87651662e1 100755 (executable)
@@ -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);
 }
 
 /**
index 71cb08d39ee181bd4e1f46dd1ceee0466a6b8c94..a5c2ca993d577699a253ee95cbe57a2e10745734 100644 (file)
@@ -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);
 }