atspi : Fix abnormal highlight order and grab on rotaryselector 51/137251/1
authorJunsuChoi <jsuya.choi@samsung.com>
Wed, 5 Jul 2017 06:02:08 +0000 (15:02 +0900)
committerJunsuChoi <jsuya.choi@samsung.com>
Wed, 5 Jul 2017 06:02:08 +0000 (15:02 +0900)
Change-Id: Ibadc51c0463e2292e4acdf43ff0fe72d985cefdf

src/wearable/efl_extension_rotary_selector.c

index fea3f512907d92277a00a5f216e1afd2d8f255dd..340c60f3a423aab19e03112fda8c8b9af1381a99 100644 (file)
@@ -877,11 +877,6 @@ _rotary_selector_show_cb(void *data, Evas *e, Evas_Object *obj, void *event_info
    //for accessibility
    if(elm_atspi_bridge_utils_is_screen_reader_enabled())
      {
-        rsd->is_read_description = EINA_TRUE;
-        elm_atspi_accessible_name_cb_set(rsd->event_area_access_object, _accessibility_name_set_cb, (Eext_Rotary_Selector_Data*)rsd);
-        elm_atspi_accessible_description_cb_set(rsd->event_area_access_object, _accessibility_description_set_cb, (Eext_Rotary_Selector_Data*)rsd);
-        elm_atspi_accessible_reading_info_type_set(rsd->event_area_access_object, ELM_ACCESSIBLE_READING_INFO_TYPE_NAME | ELM_ACCESSIBLE_READING_INFO_TYPE_DESCRIPTION);
-
         if(!_rotary_selector_from_moreoption_get(rsd->rotary_selector))
             elm_atspi_component_highlight_grab(rsd->event_area_access_object);
      }
@@ -1912,7 +1907,6 @@ eext_rotary_selector_add(Evas_Object *parent)
    // for accessibility
    evas_object_smart_callback_add(rotary_selector, "atspi,screen,reader,changed", _rotary_selector_screen_reader_changed, rsd);
 
-   _rotary_selector_from_moreoption_set(rotary_selector, EINA_FALSE);
    if (elm_atspi_bridge_utils_is_screen_reader_enabled())
      {
         rsd->event_area_access_object = elm_access_object_register(rsd->event_area, rsd->rotary_selector);
@@ -1925,6 +1919,7 @@ eext_rotary_selector_add(Evas_Object *parent)
         elm_access_action_cb_set(rsd->event_area_access_object, ELM_ACCESS_ACTION_HIGHLIGHT_NEXT, _accessibility_event_area_highlighted_cb, (Eext_Rotary_Selector_Data*)rsd);
         elm_access_action_cb_set(rsd->event_area_access_object, ELM_ACCESS_ACTION_HIGHLIGHT_PREV, _accessibility_event_area_highlighted_cb, (Eext_Rotary_Selector_Data*)rsd);
      }
+   _rotary_selector_from_moreoption_set(rotary_selector, EINA_FALSE);
    //
    return rotary_selector;
 }
@@ -2879,6 +2874,7 @@ _accessibility_event_area_highlighted_cb(void *data, Evas_Object *obj, Elm_Acces
      {
         case ELM_ACCESS_ACTION_UNHIGHLIGHT:
            rsd->is_event_area_highlighted = EINA_FALSE;
+           rsd->is_read_description = EINA_FALSE;
            break;
         case ELM_ACCESS_ACTION_HIGHLIGHT:
            if (rsd->is_read_description)
@@ -3004,7 +3000,6 @@ static void _accessibility_set_relationship(Eext_Rotary_Selector_Data *rsd,int c
    int first_index = 0;
    int last_index = 0;
 
-   rsd->is_read_description = EINA_FALSE;
    rsd->reading_page_number = current_page;
    elm_atspi_accessible_description_cb_set(rsd->event_area_access_object, _accessibility_description_set_cb, (Eext_Rotary_Selector_Data*)rsd);
    elm_atspi_accessible_reading_info_type_set(rsd->event_area_access_object, ELM_ACCESSIBLE_READING_INFO_TYPE_DESCRIPTION);
@@ -3114,7 +3109,6 @@ _rotary_selector_moreoption_opened_cb(void *data, Evas_Object *obj, void *event_
         Evas_Object *button = item->base.obj;
         elm_atspi_accessible_can_highlight_set(button, EINA_TRUE);
      }
-
    rsd->is_read_description = EINA_TRUE;
    elm_atspi_accessible_name_cb_set(rsd->event_area_access_object, _accessibility_name_set_cb, (Eext_Rotary_Selector_Data*)rsd);
    elm_atspi_accessible_description_cb_set(rsd->event_area_access_object, _accessibility_description_set_cb, (Eext_Rotary_Selector_Data*)rsd);
@@ -3154,7 +3148,11 @@ _rotary_selector_from_moreoption_set(Evas_Object *rotary_selector, Eina_Bool fro
    Eext_Rotary_Selector_Data *rsd = _eext_rotary_selector_data_get(rotary_selector);
 
    if(rsd)
-      rsd->from_moreoption = from_more_option;
+     {
+        rsd->from_moreoption = from_more_option;
+        if (rsd->from_moreoption)
+          elm_atspi_accessible_can_highlight_set(rsd->event_area_access_object, EINA_FALSE);
+     }
 }
 
 static Eina_Bool _rotary_selector_from_moreoption_get(Evas_Object *rotary_selector)