From f6a0ae9ae9c78fc640607696129ee82553b564d2 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Artur=20=C5=9Awigo=C5=84?= Date: Mon, 3 Oct 2022 18:34:32 +0200 Subject: [PATCH] elm_atspi: Add _elm_object_accessibility_should_emit_events() 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 --- src/lib/elementary/efl_ui_check.c | 8 +++-- src/lib/elementary/efl_ui_radio.c | 13 +++---- src/lib/elementary/efl_ui_slider.c | 8 +++-- src/lib/elementary/efl_ui_slider_interval.c | 8 +++-- src/lib/elementary/efl_ui_textbox.c | 8 +++-- src/lib/elementary/elc_multibuttonentry.c | 8 +++-- src/lib/elementary/elm_colorselector.c | 4 ++- src/lib/elementary/elm_entry.c | 20 ++++++++--- src/lib/elementary/elm_gengrid.c | 42 +++++++++++++--------- src/lib/elementary/elm_index.c | 4 ++- src/lib/elementary/elm_list.c | 54 +++++++++++++++++++---------- src/lib/elementary/elm_main.c | 32 +++++++++++++++++ src/lib/elementary/elm_menu.c | 13 +++++-- src/lib/elementary/elm_priv.h | 4 +++ src/lib/elementary/elm_scroller.c | 18 +++++----- src/lib/elementary/elm_slider.c | 8 ++--- src/lib/elementary/elm_toolbar.c | 18 +++++++--- src/lib/elementary_tizen/elm_genlist.c | 47 ++++++++++++++----------- 18 files changed, 213 insertions(+), 104 deletions(-) diff --git a/src/lib/elementary/efl_ui_check.c b/src/lib/elementary/efl_ui_check.c index 17bba2a..8c95162 100644 --- a/src/lib/elementary/efl_ui_check.c +++ b/src/lib/elementary/efl_ui_check.c @@ -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 diff --git a/src/lib/elementary/efl_ui_radio.c b/src/lib/elementary/efl_ui_radio.c index 60df5d0..54f604f 100644 --- a/src/lib/elementary/efl_ui_radio.c +++ b/src/lib/elementary/efl_ui_radio.c @@ -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)); + // } diff --git a/src/lib/elementary/efl_ui_slider.c b/src/lib/elementary/efl_ui_slider.c index a0ae82e..05f6aa4 100644 --- a/src/lib/elementary/efl_ui_slider.c +++ b/src/lib/elementary/efl_ui_slider.c @@ -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 diff --git a/src/lib/elementary/efl_ui_slider_interval.c b/src/lib/elementary/efl_ui_slider_interval.c index 8ea597e..082d854 100644 --- a/src/lib/elementary/efl_ui_slider_interval.c +++ b/src/lib/elementary/efl_ui_slider_interval.c @@ -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); } diff --git a/src/lib/elementary/efl_ui_textbox.c b/src/lib/elementary/efl_ui_textbox.c index c99f1d3..19cf14d 100644 --- a/src/lib/elementary/efl_ui_textbox.c +++ b/src/lib/elementary/efl_ui_textbox.c @@ -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) { diff --git a/src/lib/elementary/elc_multibuttonentry.c b/src/lib/elementary/elc_multibuttonentry.c index cb9be85..2004be6 100644 --- a/src/lib/elementary/elc_multibuttonentry.c +++ b/src/lib/elementary/elc_multibuttonentry.c @@ -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)); diff --git a/src/lib/elementary/elm_colorselector.c b/src/lib/elementary/elm_colorselector.c index d4d1732..56e8155 100644 --- a/src/lib/elementary/elm_colorselector.c +++ b/src/lib/elementary/elm_colorselector.c @@ -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); diff --git a/src/lib/elementary/elm_entry.c b/src/lib/elementary/elm_entry.c index a0ccc14..f8004f5 100644 --- a/src/lib/elementary/elm_entry.c +++ b/src/lib/elementary/elm_entry.c @@ -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 * diff --git a/src/lib/elementary/elm_gengrid.c b/src/lib/elementary/elm_gengrid.c index 91856ad..3533e6e 100755 --- a/src/lib/elementary/elm_gengrid.c +++ b/src/lib/elementary/elm_gengrid.c @@ -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 diff --git a/src/lib/elementary/elm_index.c b/src/lib/elementary/elm_index.c index 046bfc7..3a2d8b6 100644 --- a/src/lib/elementary/elm_index.c +++ b/src/lib/elementary/elm_index.c @@ -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 { diff --git a/src/lib/elementary/elm_list.c b/src/lib/elementary/elm_list.c index bfc6044..314439d 100644 --- a/src/lib/elementary/elm_list.c +++ b/src/lib/elementary/elm_list.c @@ -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); } diff --git a/src/lib/elementary/elm_main.c b/src/lib/elementary/elm_main.c index d41cc68..e4f9f8e 100644 --- a/src/lib/elementary/elm_main.c +++ b/src/lib/elementary/elm_main.c @@ -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) diff --git a/src/lib/elementary/elm_menu.c b/src/lib/elementary/elm_menu.c index 3878840..8b8e37c 100644 --- a/src/lib/elementary/elm_menu.c +++ b/src/lib/elementary/elm_menu.c @@ -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 diff --git a/src/lib/elementary/elm_priv.h b/src/lib/elementary/elm_priv.h index 63b52cf..6684b6e 100644 --- a/src/lib/elementary/elm_priv.h +++ b/src/lib/elementary/elm_priv.h @@ -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); diff --git a/src/lib/elementary/elm_scroller.c b/src/lib/elementary/elm_scroller.c index a72d793..386f907 100644 --- a/src/lib/elementary/elm_scroller.c +++ b/src/lib/elementary/elm_scroller.c @@ -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); // } diff --git a/src/lib/elementary/elm_slider.c b/src/lib/elementary/elm_slider.c index 23c011b..feed06e 100644 --- a/src/lib/elementary/elm_slider.c +++ b/src/lib/elementary/elm_slider.c @@ -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); // diff --git a/src/lib/elementary/elm_toolbar.c b/src/lib/elementary/elm_toolbar.c index 87721c4..084ebd3 100644 --- a/src/lib/elementary/elm_toolbar.c +++ b/src/lib/elementary/elm_toolbar.c @@ -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. diff --git a/src/lib/elementary_tizen/elm_genlist.c b/src/lib/elementary_tizen/elm_genlist.c index f8e8378..9cb2bb1 100644 --- a/src/lib/elementary_tizen/elm_genlist.c +++ b/src/lib/elementary_tizen/elm_genlist.c @@ -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); + // } } -- 2.7.4