elm_atspi: Add _elm_object_accessibility_should_emit_events() 53/282953/3
authorArtur Świgoń <a.swigon@samsung.com>
Mon, 3 Oct 2022 16:34:32 +0000 (18:34 +0200)
committerLukasz Oleksak <l.oleksak@samsung.com>
Thu, 27 Oct 2022 10:15:27 +0000 (10:15 +0000)
An object should emit events if it is highlighted or its controller is
highlighted. The helper function _elm_object_accessibility_should_emit_events()
allows to simplify and unify checking these conditions.

Change-Id: Id78558cd661922f68330e86e1186e31a4f7262a6

18 files changed:
src/lib/elementary/efl_ui_check.c
src/lib/elementary/efl_ui_radio.c
src/lib/elementary/efl_ui_slider.c
src/lib/elementary/efl_ui_slider_interval.c
src/lib/elementary/efl_ui_textbox.c
src/lib/elementary/elc_multibuttonentry.c
src/lib/elementary/elm_colorselector.c
src/lib/elementary/elm_entry.c
src/lib/elementary/elm_gengrid.c
src/lib/elementary/elm_index.c
src/lib/elementary/elm_list.c
src/lib/elementary/elm_main.c
src/lib/elementary/elm_menu.c
src/lib/elementary/elm_priv.h
src/lib/elementary/elm_scroller.c
src/lib/elementary/elm_slider.c
src/lib/elementary/elm_toolbar.c
src/lib/elementary_tizen/elm_genlist.c

index 17bba2a..8c95162 100644 (file)
@@ -117,10 +117,12 @@ _activate(Evas_Object *obj)
    efl_ui_selectable_selected_set(obj, !efl_ui_selectable_selected_get(obj));
    if (elm_widget_is_legacy(obj))
      _check_legacy_event(obj);
-   if (_elm_config->atspi_mode)
+   //TIZEN_ONLY(20221003): Add _elm_object_accessibility_should_emit_events()
+   if (_elm_object_accessibility_should_emit_events(obj))
      efl_access_state_changed_signal_emit(obj,
                                           EFL_ACCESS_STATE_TYPE_CHECKED,
                                           efl_ui_selectable_selected_get(obj));
+   //
 }
 
 EOLIAN static Efl_Access_State_Set
@@ -239,10 +241,12 @@ _flush_selected(Eo *obj, Eina_Bool sel)
 {
    efl_ui_selectable_selected_set(obj, sel);
 
-   if (_elm_config->atspi_mode)
+   //TIZEN_ONLY(20221003): Add _elm_object_accessibility_should_emit_events()
+   if (_elm_object_accessibility_should_emit_events(obj))
      efl_access_state_changed_signal_emit(obj,
                                           EFL_ACCESS_STATE_TYPE_CHECKED,
                                           efl_ui_selectable_selected_get(obj));
+   //
 }
 
 static void
index 60df5d0..54f604f 100644 (file)
@@ -70,15 +70,10 @@ _efl_ui_radio_efl_ui_selectable_selected_set(Eo *obj, Efl_Ui_Radio_Data *pd EINA
 
    _radio_widget_signal_emit(obj, "state,radio");
 
-   if (_elm_config->atspi_mode)
-     {
-        //TIZEN_ONLY(20210311): Emit "State Changed" signal only if the radio button is highlighted.
-        if (_elm_object_accessibility_currently_highlighted_get() == obj)
-          {
-             efl_access_state_changed_signal_emit(obj, EFL_ACCESS_STATE_TYPE_CHECKED, efl_ui_selectable_selected_get(obj));
-          }
-        //
-     }
+   //TIZEN_ONLY(20221003): Add _elm_object_accessibility_should_emit_events()
+   if (_elm_object_accessibility_should_emit_events(obj))
+     efl_access_state_changed_signal_emit(obj, EFL_ACCESS_STATE_TYPE_CHECKED, efl_ui_selectable_selected_get(obj));
+   //
 }
 
 
index a0ae82e..05f6aa4 100644 (file)
@@ -36,8 +36,10 @@ _delay_change(void *data)
    sd->delay = NULL;
    efl_event_callback_call(data, EFL_UI_RANGE_EVENT_STEADY, NULL);
 
-   if (_elm_config->atspi_mode)
+   //TIZEN_ONLY(20221003): Add _elm_object_accessibility_should_emit_events()
+   if (_elm_object_accessibility_should_emit_events(data))
      efl_access_value_changed_signal_emit(data);
+   //
 
    return ECORE_CALLBACK_CANCEL;
 }
@@ -75,8 +77,10 @@ _emit_events(Eo *obj, Efl_Ui_Slider_Data *sd)
      efl_event_callback_call(obj, EFL_UI_RANGE_EVENT_MAX_REACHED, NULL);
 
    // emit accessibility event also if value was changed by API
-   if (_elm_config->atspi_mode)
+   //TIZEN_ONLY(20221003): Add _elm_object_accessibility_should_emit_events()
+   if (_elm_object_accessibility_should_emit_events(obj))
      efl_access_value_changed_signal_emit(obj);
+   //
 }
 
 static void
index 8ea597e..082d854 100644 (file)
@@ -33,8 +33,10 @@ _delay_change(void *data)
    pd->delay = NULL;
    efl_event_callback_call(data, EFL_UI_RANGE_EVENT_STEADY, NULL);
 
-   if (_elm_config->atspi_mode)
+   //TIZEN_ONLY(20221003): Add _elm_object_accessibility_should_emit_events()
+   if (_elm_object_accessibility_should_emit_events(data))
      efl_access_value_changed_signal_emit(data);
+   //
 
    return ECORE_CALLBACK_CANCEL;
 }
@@ -88,8 +90,10 @@ _val_set(Evas_Object *obj)
                          pos2, pos2);
 
    // emit accessibility event also if value was changed by API
-   if (_elm_config->atspi_mode)
+   //TIZEN_ONLY(20221003): Add _elm_object_accessibility_should_emit_events()
+   if (_elm_object_accessibility_should_emit_events(obj))
      efl_access_value_changed_signal_emit(obj);
+   //
 
    evas_object_smart_changed(obj);
 }
index c99f1d3..19cf14d 100644 (file)
@@ -743,8 +743,10 @@ _efl_ui_textbox_efl_ui_focus_object_on_focus_update(Eo *obj, Efl_Ui_Textbox_Data
 
         if (efl_input_text_input_panel_autoshow_get(obj) && !efl_input_text_input_panel_show_on_demand_get(obj))
           elm_win_keyboard_mode_set(top, ELM_WIN_KEYBOARD_ON);
-        if (_elm_config->atspi_mode)
+        //TIZEN_ONLY(20221003): Add _elm_object_accessibility_should_emit_events()
+        if (_elm_object_accessibility_should_emit_events(obj))
           efl_access_state_changed_signal_emit(obj, EFL_ACCESS_STATE_TYPE_FOCUSED, EINA_TRUE);
+        //
      }
    else
      {
@@ -755,8 +757,10 @@ _efl_ui_textbox_efl_ui_focus_object_on_focus_update(Eo *obj, Efl_Ui_Textbox_Data
 
         if (efl_input_text_input_panel_autoshow_get(obj))
           elm_win_keyboard_mode_set(top, ELM_WIN_KEYBOARD_OFF);
-        if (_elm_config->atspi_mode)
+        //TIZEN_ONLY(20221003): Add _elm_object_accessibility_should_emit_events()
+        if (_elm_object_accessibility_should_emit_events(obj))
           efl_access_state_changed_signal_emit(obj, EFL_ACCESS_STATE_TYPE_FOCUSED, EINA_FALSE);
+        //
 
         if (_elm_config->selection_clear_enable)
           {
index cb9be85..2004be6 100644 (file)
@@ -526,10 +526,12 @@ _on_item_clicked(void *data,
 
    _item_select(WIDGET(it), it);
 
-   if (_elm_atspi_enabled())
+   //TIZEN_ONLY(20221003): Add _elm_object_accessibility_should_emit_events()
+   if (_elm_object_accessibility_should_emit_events(eo_it))
      efl_access_state_changed_signal_emit(eo_it,
                                           EFL_ACCESS_STATE_TYPE_CHECKED,
                                           EINA_TRUE);
+   //
 
    if (sd->selected_it)
      efl_event_callback_legacy_call
@@ -690,8 +692,10 @@ EOLIAN static void
 _elm_multibuttonentry_item_efl_object_destructor(Eo *eo_it,
                                               Elm_Multibuttonentry_Item_Data *it)
 {
-   if (_elm_atspi_enabled())
+   //TIZEN_ONLY(20221003): Add _elm_object_accessibility_should_emit_events()
+   if (_elm_object_accessibility_should_emit_events(WIDGET(it)))
      efl_access_children_changed_del_signal_emit(WIDGET(it), eo_it);
+   //
    _item_del(it);
 
    efl_destructor(efl_super(eo_it, ELM_MULTIBUTTONENTRY_ITEM_CLASS));
index d4d1732..56e8155 100644 (file)
@@ -1821,10 +1821,12 @@ _item_action_activate(Evas_Object *obj, const char *params EINA_UNUSED)
    //
 
    elm_object_signal_emit(VIEW(item), "elm,state,selected", "elm");
-   if (_elm_atspi_enabled())
+   //TIZEN_ONLY(20221003): Add _elm_object_accessibility_should_emit_events()
+   if (_elm_object_accessibility_should_emit_events(obj))
      efl_access_state_changed_signal_emit(obj,
                                           EFL_ACCESS_STATE_TYPE_CHECKED,
                                           EINA_TRUE);
+   //
    // TIZEN_ONLY(20170719): item selection procedure is handled by _on_color_selected()
    /*elm_colorselector_color_set(WIDGET(item), item->color->r, item->color->g,
                                item->color->b, item->color->a);
index a0ccc14..f8004f5 100644 (file)
@@ -1801,8 +1801,10 @@ _elm_entry_focus_update(Eo *obj, Elm_Entry_Data *sd)
         /* TIZEN_ONLY(20180514): support legacy focused/unfocused callback calls */
         evas_object_smart_callback_call(obj, "focused", NULL);
         /* END */
-        if (_elm_atspi_enabled())
+        //TIZEN_ONLY(20221003): Add _elm_object_accessibility_should_emit_events()
+        if (_elm_object_accessibility_should_emit_events(obj))
           efl_access_state_changed_signal_emit(obj, EFL_ACCESS_STATE_TYPE_FOCUSED, EINA_TRUE);
+        //
         _return_key_enabled_check(obj);
         _validate(obj);
 
@@ -1842,8 +1844,10 @@ _elm_entry_focus_update(Eo *obj, Elm_Entry_Data *sd)
         /* TIZEN_ONLY(20180514): support legacy focused/unfocused callback calls */
         evas_object_smart_callback_call(obj, "unfocused", NULL);
         /* END */
-        if (_elm_atspi_enabled())
+        //TIZEN_ONLY(20221003): Add _elm_object_accessibility_should_emit_events()
+        if (_elm_object_accessibility_should_emit_events(obj))
           efl_access_state_changed_signal_emit(obj, EFL_ACCESS_STATE_TYPE_FOCUSED, EINA_FALSE);
+        //
 
         /*************************************************************
          * TIZEN_ONLY_FEATURE : Tizen Copy & Paste feature with CBHM *
@@ -3325,8 +3329,10 @@ _entry_selection_changed_signal_cb(void *data,
    //
      _selection_store(ELM_SEL_TYPE_PRIMARY, data);
    _update_selection_handler(data);
-   if (_elm_atspi_enabled())
+   //TIZEN_ONLY(20221003): Add _elm_object_accessibility_should_emit_events()
+   if (_elm_object_accessibility_should_emit_events(data))
      efl_access_object_event_emit(data, EFL_ACCESS_TEXT_EVENT_ACCESS_TEXT_SELECTION_CHANGED, NULL);
+   //
 }
 
 static void
@@ -3475,8 +3481,10 @@ _entry_cursor_changed_signal_cb(void *data,
 
    efl_event_callback_legacy_call(data, ELM_ENTRY_EVENT_CURSOR_CHANGED, NULL);
 
-   if (_elm_atspi_enabled())
+   //TIZEN_ONLY(20221003): Add _elm_object_accessibility_should_emit_events()
+   if (_elm_object_accessibility_should_emit_events(data))
      efl_access_object_event_emit(data, EFL_ACCESS_TEXT_EVENT_ACCESS_TEXT_CARET_MOVED, NULL);
+   //
 }
 
 static void
@@ -3487,8 +3495,10 @@ _entry_cursor_changed_manual_signal_cb(void *data,
 {
    efl_event_callback_legacy_call
      (data, ELM_ENTRY_EVENT_CURSOR_CHANGED_MANUAL, NULL);
-   if (_elm_atspi_enabled())
+   //TIZEN_ONLY(20221003): Add _elm_object_accessibility_should_emit_events()
+   if (_elm_object_accessibility_should_emit_events(data))
      efl_access_object_event_emit(data, EFL_ACCESS_TEXT_EVENT_ACCESS_TEXT_CARET_MOVED, NULL);
+   //
 
    /*************************************************************
     * TIZEN_ONLY_FEATURE : Tizen Copy & Paste feature with CBHM *
index 91856ad..3533e6e 100755 (executable)
@@ -832,8 +832,10 @@ _item_unselect(Elm_Gen_Item *it)
         sd->selected = eina_list_remove(sd->selected, eo_it);
         evas_object_smart_callback_call
           (WIDGET(it), "unselected", eo_it);
-        if (_elm_atspi_enabled())
+        //TIZEN_ONLY(20221003): Add _elm_object_accessibility_should_emit_events()
+        if (_elm_object_accessibility_should_emit_events(eo_it))
           efl_access_state_changed_signal_emit(eo_it, EFL_ACCESS_STATE_TYPE_SELECTED, EINA_FALSE);
+        //
      }
 }
 
@@ -1149,8 +1151,10 @@ _item_text_realize(Elm_Gen_Item *it,
              snprintf(buf, sizeof(buf), "elm,state,%s,hidden", key);
              edje_object_signal_emit(target, buf, "elm");
           }
-        if (_elm_atspi_enabled())
+        //TIZEN_ONLY(20221003): Add _elm_object_accessibility_should_emit_events()
+        if (_elm_object_accessibility_should_emit_events(EO_OBJ(it)))
           efl_access_i18n_name_changed_signal_emit(EO_OBJ(it));
+        //
      }
 }
 
@@ -2860,8 +2864,10 @@ _elm_gengrid_item_focused(Elm_Object_Item *eo_it)
      }
 
    efl_event_callback_legacy_call(obj, ELM_GENGRID_EVENT_ITEM_FOCUSED, eo_it);
-   if (_elm_atspi_enabled())
+   //TIZEN_ONLY(20221003): Add _elm_object_accessibility_should_emit_events()
+   if (_elm_object_accessibility_should_emit_events(eo_it))
      efl_access_state_changed_signal_emit(eo_it, EFL_ACCESS_STATE_TYPE_FOCUSED, EINA_TRUE);
+   //
 }
 
 static void
@@ -2891,8 +2897,10 @@ _elm_gengrid_item_unfocused(Elm_Object_Item *eo_it)
 
    sd->focused_item = NULL;
    efl_event_callback_legacy_call(obj, ELM_GENGRID_EVENT_ITEM_UNFOCUSED, eo_it);
-   if (_elm_atspi_enabled())
+   //TIZEN_ONLY(20221003): Add _elm_object_accessibility_should_emit_events()
+   if (_elm_object_accessibility_should_emit_events(eo_it))
      efl_access_state_changed_signal_emit(eo_it, EFL_ACCESS_STATE_TYPE_FOCUSED, EINA_FALSE);
+   //
 }
 
 //TIZEN_ONLY(20180607): Restore legacy focus
@@ -5017,11 +5025,10 @@ _scroll_animate_stop_cb(Evas_Object *obj,
                         void *data EINA_UNUSED)
 {
    evas_object_smart_callback_call(obj, "scroll,anim,stop", NULL);
-   //TIZEN_ONLY: Let the screen-reader know when scroll animation ends
-   if (_elm_atspi_enabled())
-     {
-        efl_access_visible_data_changed_signal_emit(obj);
-     }
+   //TIZEN_ONLY(20221003): Add _elm_object_accessibility_should_emit_events()
+   // Let the screen-reader know when scroll animation ends
+   if (_elm_object_accessibility_should_emit_events(obj))
+     efl_access_visible_data_changed_signal_emit(obj);
    //
 }
 
@@ -5037,12 +5044,11 @@ _scroll_drag_stop_cb(Evas_Object *obj,
                      void *data EINA_UNUSED)
 {
    evas_object_smart_callback_call(obj, "scroll,drag,stop", NULL);
-   //TIZEN_ONLY: Let the screen-reader know when drag ends
-    if (_elm_atspi_enabled())
-      {
-         efl_access_visible_data_changed_signal_emit(obj);
-      }
-    //
+   //TIZEN_ONLY(20221003): Add _elm_object_accessibility_should_emit_events()
+   // Let the screen-reader know when drag ends
+   if (_elm_object_accessibility_should_emit_events(obj))
+     efl_access_visible_data_changed_signal_emit(obj);
+   //
 }
 
 static void
@@ -5211,7 +5217,7 @@ _internal_elm_gengrid_clear(Evas_Object *obj,
 
    ELM_GENGRID_DATA_GET(obj, sd);
    if (!sd->items) return;
-   
+
    eina_list_free(sd->atspi_children);
    sd->atspi_children = NULL;
 
@@ -5303,8 +5309,10 @@ _item_select(Elm_Gen_Item *it)
    if ((it->base)->on_deletion) goto item_deleted;
 
    evas_object_smart_callback_call(WIDGET(it), "selected", eo_it);
-   if (_elm_atspi_enabled())
+   //TIZEN_ONLY(20221003): Add _elm_object_accessibility_should_emit_events()
+   if (_elm_object_accessibility_should_emit_events(eo_it))
      efl_access_state_changed_signal_emit(eo_it, EFL_ACCESS_STATE_TYPE_SELECTED, EINA_TRUE);
+   //
 
    if ((it->base)->on_deletion) goto item_deleted;
    //TIZEN_ONLY(20161115) : Add clicked signal for sound process
index 046bfc7..3a2d8b6 100644 (file)
@@ -1506,8 +1506,10 @@ _elm_index_item_selected_set(Eo *eo_it,
         ecore_timer_del(sd->delay);
         sd->delay = ecore_timer_add(sd->delay_change_time,
                                     _delay_change_cb, obj);
-        if (_elm_atspi_enabled())
+        //TIZEN_ONLY(20221003): Add _elm_object_accessibility_should_emit_events()
+        if (_elm_object_accessibility_should_emit_events(eo_it))
           efl_access_state_changed_signal_emit(eo_it, EFL_ACCESS_STATE_TYPE_SELECTED, EINA_TRUE);
+        //
      }
    else
      {
index bfc6044..314439d 100644 (file)
@@ -1211,8 +1211,10 @@ _elm_list_item_focused(Elm_Object_Item *eo_it)
      evas_object_raise(VIEW(it));
    efl_event_callback_legacy_call
      (WIDGET(it), ELM_LIST_EVENT_ITEM_FOCUSED, eo_it);
-   if (_elm_atspi_enabled())
+   //TIZEN_ONLY(20221003): Add _elm_object_accessibility_should_emit_events()
+   if (_elm_object_accessibility_should_emit_events(eo_it))
      efl_access_state_changed_signal_emit(eo_it, EFL_ACCESS_STATE_TYPE_FOCUSED, EINA_TRUE);
+   //
 }
 
 static void
@@ -1239,8 +1241,10 @@ _elm_list_item_unfocused(Elm_Object_Item *eo_it)
 
    sd->focused_item = NULL;
    efl_event_callback_legacy_call(obj, ELM_LIST_EVENT_ITEM_UNFOCUSED, eo_it);
-   if (_elm_atspi_enabled())
+   //TIZEN_ONLY(20221003): Add _elm_object_accessibility_should_emit_events()
+   if (_elm_object_accessibility_should_emit_events(eo_it))
      efl_access_state_changed_signal_emit(eo_it, EFL_ACCESS_STATE_TYPE_FOCUSED, EINA_FALSE);
+   //
 }
 
 /*
@@ -1480,8 +1484,10 @@ call:
 
    if (it->func) it->func((void *)WIDGET_ITEM_DATA_GET(eo_it), WIDGET(it), eo_it);
    evas_object_smart_callback_call(obj, "selected", eo_it);
-   if (_elm_atspi_enabled())
+   //TIZEN_ONLY(20221003): Add _elm_object_accessibility_should_emit_events()
+   if (_elm_object_accessibility_should_emit_events(eo_it))
      efl_access_state_changed_signal_emit(eo_it, EFL_ACCESS_STATE_TYPE_SELECTED, EINA_TRUE);
+   //
    sd->last_selected_item = eo_it;
 
    _elm_list_unwalk(obj, sd);
@@ -1556,8 +1562,10 @@ _item_unselect(Elm_List_Item_Data *it)
               (sd->select_mode == ELM_OBJECT_SELECT_MODE_NONE)))
           evas_object_smart_callback_call
                   (WIDGET(it), "unselected", EO_OBJ(it));
-        if (_elm_atspi_enabled())
+        //TIZEN_ONLY(20221003): Add _elm_object_accessibility_should_emit_events()
+        if (_elm_object_accessibility_should_emit_events(EO_OBJ(it)))
           efl_access_state_changed_signal_emit(EO_OBJ(it), EFL_ACCESS_STATE_TYPE_SELECTED, EINA_FALSE);
+        //
      }
 
    _elm_list_unwalk(obj, sd);
@@ -1618,11 +1626,10 @@ static void
 _scroll_animate_stop_cb(Evas_Object *obj,
                         void *data EINA_UNUSED)
 {
-   //TIZEN_ONLY: Let the screen-reader know when scroll animation ends
-   if (_elm_atspi_enabled())
-     {
-        efl_access_visible_data_changed_signal_emit(obj);
-     }
+   //TIZEN_ONLY(20221003): Add _elm_object_accessibility_should_emit_events()
+   // Let the screen-reader know when scroll animation ends
+   if (_elm_object_accessibility_should_emit_events(obj))
+     efl_access_visible_data_changed_signal_emit(obj);
    //
 }
 
@@ -1630,11 +1637,10 @@ static void
 _scroll_drag_stop_cb(Evas_Object *obj,
                         void *data EINA_UNUSED)
 {
-   //TIZEN_ONLY: Let the screen-reader know when scroll animation ends
-   if (_elm_atspi_enabled())
-     {
-        efl_access_visible_data_changed_signal_emit(obj);
-     }
+   //TIZEN_ONLY(20221003): Add _elm_object_accessibility_should_emit_events()
+   // Let the screen-reader know when scroll animation ends
+   if (_elm_object_accessibility_should_emit_events(obj))
+     efl_access_visible_data_changed_signal_emit(obj);
    //
 }
 
@@ -2877,8 +2883,10 @@ _elm_list_item_append(Eo *obj, Elm_List_Data *sd, const char *label, Evas_Object
    it->node = eina_list_last(sd->items);
    elm_box_pack_end(sd->box, VIEW(it));
 
-   if (_elm_atspi_enabled())
+   //TIZEN_ONLY(20221003): Add _elm_object_accessibility_should_emit_events()
+   if (_elm_object_accessibility_should_emit_events(obj))
      efl_access_children_changed_added_signal_emit(obj, EO_OBJ(it));
+   //
 
    return EO_OBJ(it);
 }
@@ -2899,8 +2907,10 @@ _elm_list_item_prepend(Eo *obj, Elm_List_Data *sd, const char *label, Evas_Objec
    it->node = sd->items;
    elm_box_pack_start(sd->box, VIEW(it));
 
-   if (_elm_atspi_enabled())
+   //TIZEN_ONLY(20221003): Add _elm_object_accessibility_should_emit_events()
+   if (_elm_object_accessibility_should_emit_events(obj))
      efl_access_children_changed_added_signal_emit(obj, EO_OBJ(it));
+   //
 
    return EO_OBJ(it);
 }
@@ -2926,8 +2936,10 @@ _elm_list_item_insert_before(Eo *obj, Elm_List_Data *sd, Elm_Object_Item *eo_bef
    it->node = before_it->node->prev;
    elm_box_pack_before(sd->box, VIEW(it), VIEW(before_it));
 
-   if (_elm_atspi_enabled())
+   //TIZEN_ONLY(20221003): Add _elm_object_accessibility_should_emit_events()
+   if (_elm_object_accessibility_should_emit_events(obj))
      efl_access_children_changed_added_signal_emit(obj, EO_OBJ(it));
+   //
 
    return EO_OBJ(it);
 }
@@ -2953,8 +2965,10 @@ _elm_list_item_insert_after(Eo *obj, Elm_List_Data *sd, Elm_Object_Item *eo_afte
    it->node = after_it->node->next;
    elm_box_pack_after(sd->box, VIEW(it), VIEW(after_it));
 
-   if (_elm_atspi_enabled())
+   //TIZEN_ONLY(20221003): Add _elm_object_accessibility_should_emit_events()
+   if (_elm_object_accessibility_should_emit_events(obj))
      efl_access_children_changed_added_signal_emit(obj, EO_OBJ(it));
+   //
 
    return EO_OBJ(it);
 }
@@ -2989,8 +3003,10 @@ _elm_list_item_sorted_insert(Eo *obj, Elm_List_Data *sd, const char *label, Evas
         elm_box_pack_before(sd->box, VIEW(it), VIEW(before));
      }
 
-   if (_elm_atspi_enabled())
+   //TIZEN_ONLY(20221003): Add _elm_object_accessibility_should_emit_events()
+   if (_elm_object_accessibility_should_emit_events(obj))
      efl_access_children_changed_added_signal_emit(obj, EO_OBJ(it));
+   //
 
    return EO_OBJ(it);
 }
index d41cc68..e4f9f8e 100644 (file)
@@ -2237,6 +2237,38 @@ elm_object_accessibility_currently_highlighted_get(void)
    return _elm_object_accessibility_currently_highlighted_get();
 }
 
+//TIZEN_ONLY(20221003): Add _elm_object_accessibility_should_emit_events()
+Eina_Bool
+_elm_object_accessibility_should_emit_events(Eo *obj)
+{
+   if (!_elm_atspi_enabled())
+     return EINA_FALSE;
+
+   if (_elm_object_accessibility_currently_highlighted_get() == obj)
+     return EINA_TRUE;
+
+   // Also check if object's controller is highlighted
+   Efl_Access_Relation_Set relations = elm_atspi_accessible_relation_set_get(obj);
+   Efl_Access_Relation *relation;
+   Eo *controller = NULL;
+   Eina_List *l;
+   EINA_LIST_FOREACH(relations, l, relation)
+     {
+        if (relation->type == EFL_ACCESS_RELATION_TYPE_CONTROLLED_BY)
+          {
+             controller = eina_list_last_data_get(relation->objects);
+             break;
+          }
+     }
+   efl_access_relation_set_free(&relations);
+
+   if (controller && _elm_object_accessibility_currently_highlighted_get() == controller)
+     return EINA_TRUE;
+
+   return EINA_FALSE;
+}
+//
+
 //TIZEN_ONLY(20171108): bring HIGHLIGHT related changes
 EAPI void
 elm_object_accessibility_highlight_set(void *obj, Eina_Bool visible)
index 3878840..8b8e37c 100644 (file)
@@ -142,8 +142,11 @@ _submenu_sizing_eval(Elm_Menu_Item_Data *parent_it)
      {
         ELM_MENU_ITEM_DATA_GET(eo_item, item);
         elm_layout_sizing_eval(VIEW(item));
-        if (_elm_config->atspi_mode)
+
+        //TIZEN_ONLY(20221003): Add _elm_object_accessibility_should_emit_events()
+        if (_elm_object_accessibility_should_emit_events(eo_item))
           efl_access_state_changed_signal_emit(eo_item, EFL_ACCESS_STATE_TYPE_SHOWING, EINA_TRUE);
+        //
      }
 
 
@@ -529,8 +532,10 @@ _menu_item_activate_cb(void *data,
         if (sd->menu_bar && was_open)
           _menu_item_select_cb(item, NULL, NULL, NULL);
      }
-   if (_elm_config->atspi_mode)
+   //TIZEN_ONLY(20221003): Add _elm_object_accessibility_should_emit_events()
+   if (_elm_object_accessibility_should_emit_events(EO_OBJ(item)))
      efl_access_state_changed_signal_emit(EO_OBJ(item), EFL_ACCESS_STATE_TYPE_SELECTED, EINA_TRUE);
+   //
 }
 
 static void
@@ -543,8 +548,10 @@ _menu_item_inactivate_cb(void *data,
 
    item->selected = 0;
    if (item->submenu.open) _submenu_hide(item);
-   if (_elm_config->atspi_mode)
+   //TIZEN_ONLY(20221003): Add _elm_object_accessibility_should_emit_events()
+   if (_elm_object_accessibility_should_emit_events(EO_OBJ(item)))
      efl_access_state_changed_signal_emit(EO_OBJ(item), EFL_ACCESS_STATE_TYPE_SELECTED, EINA_FALSE);
+   //
 }
 
 static void
index 63b52cf..6684b6e 100644 (file)
@@ -997,6 +997,10 @@ void efl_ui_win_inlined_parent_set(Eo *obj, Efl_Canvas_Object *parent);
 void *_elm_object_accessibility_currently_highlighted_get();
 //
 
+//TIZEN_ONLY(20221003): Add _elm_object_accessibility_should_emit_events()
+Eina_Bool _elm_object_accessibility_should_emit_events(Eo *obj);
+//
+
 /* Internal EO APIs */
 const Elm_Layout_Part_Alias_Description *efl_ui_layout_content_aliases_get(const Eo *obj);
 const Elm_Layout_Part_Alias_Description *efl_ui_layout_text_aliases_get(const Eo *obj);
index a72d793..386f907 100644 (file)
@@ -782,11 +782,10 @@ _scroll_anim_stop_cb(Evas_Object *obj,
                      void *data EINA_UNUSED)
 {
    evas_object_smart_callback_call(obj, "scroll,anim,stop", NULL);
-   //TIZEN_ONLY: Let the screen-reader know when scroll animation ends
-   if (_elm_atspi_enabled())
-     {
-        efl_access_visible_data_changed_signal_emit(obj);
-     }
+   //TIZEN_ONLY(20221003): Add _elm_object_accessibility_should_emit_events()
+   // Let the screen-reader know when scroll animation ends
+   if (_elm_object_accessibility_should_emit_events(obj))
+     efl_access_visible_data_changed_signal_emit(obj);
    //
 }
 
@@ -795,11 +794,10 @@ _scroll_drag_start_cb(Evas_Object *obj,
                       void *data EINA_UNUSED)
 {
    evas_object_smart_callback_call(obj, "scroll,drag,start", NULL);
-   //TIZEN_ONLY: Let the screen-reader know when scroll animation ends
-   if (_elm_atspi_enabled())
-     {
-        efl_access_visible_data_changed_signal_emit(obj);
-     }
+   //TIZEN_ONLY(20221003): Add _elm_object_accessibility_should_emit_events()
+   // Let the screen-reader know when scroll animation ends
+   if (_elm_object_accessibility_should_emit_events(obj))
+     efl_access_visible_data_changed_signal_emit(obj);
    //
 }
 
index 23c011b..feed06e 100644 (file)
@@ -66,8 +66,8 @@ _delay_change(void *data)
    sd->delay = NULL;
    evas_object_smart_callback_call(data, SIG_DELAY_CHANGED, NULL);
 
-   //TIZEN_ONLY(20220829): Emit value changed event only if the slider is highlighted
-   if (_elm_config->atspi_mode && _elm_object_accessibility_currently_highlighted_get() == data)
+   //TIZEN_ONLY(20221003): Add _elm_object_accessibility_should_emit_events()
+   if (_elm_object_accessibility_should_emit_events(data))
      efl_access_value_changed_signal_emit(data);
    //
 
@@ -392,8 +392,8 @@ _val_set(Evas_Object *obj)
    //
 
    // emit accessibility event also if value was changed by API
-   //TIZEN_ONLY(20220829): Emit value changed event only if the slider is highlighted
-   if (_elm_config->atspi_mode && _elm_object_accessibility_currently_highlighted_get() == obj)
+   //TIZEN_ONLY(20221003): Add _elm_object_accessibility_should_emit_events()
+   if (_elm_object_accessibility_should_emit_events(obj))
      efl_access_value_changed_signal_emit(obj);
    //
 
index 87721c4..084ebd3 100644 (file)
@@ -216,8 +216,10 @@ _item_unselect(Elm_Toolbar_Item_Data *item)
    if (selected)
      {
         evas_object_smart_callback_call(WIDGET(item), "unselected", EO_OBJ(item));
-        if (_elm_atspi_enabled())
+        //TIZEN_ONLY(20221003): Add _elm_object_accessibility_should_emit_events()
+        if (_elm_object_accessibility_should_emit_events(EO_OBJ(item)))
           efl_access_state_changed_signal_emit(EO_OBJ(item), EFL_ACCESS_STATE_TYPE_SELECTED, EINA_FALSE);
+        //
      }
    /* END */
 }
@@ -705,8 +707,10 @@ _elm_toolbar_item_focused(Elm_Object_Item *eo_it)
      evas_object_raise(VIEW(it));
    efl_event_callback_legacy_call
      (obj, ELM_TOOLBAR_EVENT_ITEM_FOCUSED, EO_OBJ(it));
-   if (_elm_atspi_enabled())
+   //TIZEN_ONLY(20221003): Add _elm_object_accessibility_should_emit_events()
+   if (_elm_object_accessibility_should_emit_events(EO_OBJ(it)))
      efl_access_state_changed_signal_emit(EO_OBJ(it), EFL_ACCESS_STATE_TYPE_FOCUSED, EINA_TRUE);
+   //
 }
 
 static void
@@ -733,8 +737,10 @@ _elm_toolbar_item_unfocused(Elm_Object_Item *eo_it)
    sd->focused_item = NULL;
    efl_event_callback_legacy_call
      (obj, ELM_TOOLBAR_EVENT_ITEM_UNFOCUSED, eo_it);
-   if (_elm_atspi_enabled())
+   //TIZEN_ONLY(20221003): Add _elm_object_accessibility_should_emit_events()
+   if (_elm_object_accessibility_should_emit_events(eo_it))
      efl_access_state_changed_signal_emit(eo_it, EFL_ACCESS_STATE_TYPE_FOCUSED, EINA_TRUE);
+   //
 }
 
 /*
@@ -1254,8 +1260,10 @@ _item_select(Elm_Toolbar_Item_Data *it)
    //
 
    evas_object_smart_callback_call(obj, "selected", EO_OBJ(it));
-   if (_elm_atspi_enabled())
-    efl_access_state_changed_signal_emit(EO_OBJ(it), EFL_ACCESS_STATE_TYPE_SELECTED, EINA_TRUE);
+   //TIZEN_ONLY(20221003): Add _elm_object_accessibility_should_emit_events()
+   if (_elm_object_accessibility_should_emit_events(EO_OBJ(it)))
+     efl_access_state_changed_signal_emit(EO_OBJ(it), EFL_ACCESS_STATE_TYPE_SELECTED, EINA_TRUE);
+   //
 }
 
 /* Send order signals when item is added/deleted.
index f8e8378..9cb2bb1 100644 (file)
@@ -919,11 +919,10 @@ _item_text_realize(Elm_Gen_Item *it,
                }
           }
         edje_object_message_signal_process(target);
-        if (_elm_atspi_enabled())
-          //TIZEN_ONLY(20210323): reduce unnecessary signal
-          if (EO_OBJ(it) == _elm_object_accessibility_currently_highlighted_get())
-          //
-            efl_access_i18n_name_changed_signal_emit(EO_OBJ(it));
+        //TIZEN_ONLY(20221003): Add _elm_object_accessibility_should_emit_events()
+        if (_elm_object_accessibility_should_emit_events(EO_OBJ(it)))
+          efl_access_i18n_name_changed_signal_emit(EO_OBJ(it));
+        //
      }
 }
 
@@ -3745,8 +3744,10 @@ static void _item_unfocused(Elm_Gen_Item *it)
    elm_widget_focus_order_raise(WIDGET(it));
    sd->focused_item = NULL;
    efl_event_callback_legacy_call(WIDGET(it), ELM_GENLIST_EVENT_ITEM_UNFOCUSED, EO_OBJ(it));
-   if (_elm_atspi_enabled())
+   //TIZEN_ONLY(20221003): Add _elm_object_accessibility_should_emit_events()
+   if (_elm_object_accessibility_should_emit_events(EO_OBJ(it)))
      efl_access_state_changed_signal_emit(EO_OBJ(it), EFL_ACCESS_STATE_TYPE_FOCUSED, EINA_FALSE);
+   //
 }
 
 static void _item_focused(Elm_Gen_Item *it, Elm_Genlist_Item_Scrollto_Type type)
@@ -3779,8 +3780,10 @@ static void _item_focused(Elm_Gen_Item *it, Elm_Genlist_Item_Scrollto_Type type)
    sd->on_focus_defer = EINA_FALSE;
    sd->focused_item = EO_OBJ(it);
    efl_event_callback_legacy_call(WIDGET(it), ELM_GENLIST_EVENT_ITEM_FOCUSED, EO_OBJ(it));
-   if (_elm_atspi_enabled())
+   //TIZEN_ONLY(20221003): Add _elm_object_accessibility_should_emit_events()
+   if (_elm_object_accessibility_should_emit_events(EO_OBJ(it)))
      efl_access_state_changed_signal_emit(EO_OBJ(it), EFL_ACCESS_STATE_TYPE_FOCUSED, EINA_TRUE);
+   //
 }
 
 static Eina_Bool
@@ -3883,8 +3886,10 @@ _item_highlight(Elm_Gen_Item *it)
 //****************************
 end:
    evas_object_smart_callback_call(WIDGET(it), SIG_HIGHLIGHTED, EO_OBJ(it));
-   if (_elm_atspi_enabled())
+   //TIZEN_ONLY(20221003): Add _elm_object_accessibility_should_emit_events()
+   if (_elm_object_accessibility_should_emit_events(WIDGET(it)))
      efl_access_active_descendant_changed_signal_emit(WIDGET(it), EO_OBJ(it));
+   //
 }
 
 static void
@@ -7262,11 +7267,10 @@ _scroll_animate_stop_cb(Evas_Object *obj,
    ELM_WIDGET_DATA_GET_OR_RETURN(obj, wd);
    evas_object_smart_callback_call(obj, SIG_SCROLL_ANIM_STOP, NULL);
 
-   //TIZEN_ONLY: Let the screen-reader know when scroll animation ends
-   if (_elm_atspi_enabled())
-     {
-        efl_access_visible_data_changed_signal_emit(obj);
-     }
+   //TIZEN_ONLY(20221003): Add _elm_object_accessibility_should_emit_events()
+   // Let the screen-reader know when scroll animation ends
+   if (_elm_object_accessibility_should_emit_events(obj))
+     efl_access_visible_data_changed_signal_emit(obj);
    //
 }
 
@@ -7330,11 +7334,10 @@ _scroll_drag_stop_cb(Evas_Object *obj,
                      void *data EINA_UNUSED)
 {
    evas_object_smart_callback_call(obj, SIG_SCROLL_DRAG_STOP, NULL);
-   //TIZEN_ONLY: Let the screen-reader know when drag ends
-   if (_elm_atspi_enabled())
-     {
-        efl_access_visible_data_changed_signal_emit(obj);
-     }
+   //TIZEN_ONLY(20221003): Add _elm_object_accessibility_should_emit_events()
+   // Let the screen-reader know when drag ends
+   if (_elm_object_accessibility_should_emit_events(obj))
+     efl_access_visible_data_changed_signal_emit(obj);
    //
 }
 
@@ -9296,8 +9299,10 @@ _elm_genlist_item_expanded_set(Eo *eo_item EINA_UNUSED, Elm_Gen_Item *it, Eina_B
           edje_object_signal_emit(VIEW(it), SIGNAL_EXPANDED, "elm");
         efl_event_callback_legacy_call
               (WIDGET(it), ELM_GENLIST_EVENT_EXPANDED, EO_OBJ(it));
-        if (_elm_atspi_enabled())
+        //TIZEN_ONLY(20221003): Add _elm_object_accessibility_should_emit_events()
+        if (_elm_object_accessibility_should_emit_events(WIDGET(it)))
           efl_access_active_descendant_changed_signal_emit(WIDGET(it), eo_item);
+        //
      }
    else
      {
@@ -9305,8 +9310,10 @@ _elm_genlist_item_expanded_set(Eo *eo_item EINA_UNUSED, Elm_Gen_Item *it, Eina_B
           edje_object_signal_emit(VIEW(it), SIGNAL_CONTRACTED, "elm");
         efl_event_callback_legacy_call
               (WIDGET(it), ELM_GENLIST_EVENT_CONTRACTED, EO_OBJ(it));
-        if (_elm_atspi_enabled())
+        //TIZEN_ONLY(20221003): Add _elm_object_accessibility_should_emit_events()
+        if (_elm_object_accessibility_should_emit_events(WIDGET(it)))
           efl_access_active_descendant_changed_signal_emit(WIDGET(it), eo_item);
+        //
      }
 }