An object needs to have both ATSPI_ROLE_COMBO_BOX and ATSPI_STATE_MODAL.
Change-Id: Iefd43d570f6bc04a7ae50bd3fb3a246ae0abdddc
void utils_a11y_bus_connection_set(Eldbus_Connection *conn);
Eldbus_Connection *utils_a11y_bus_connection_get(void);
-Eina_Bool object_has_modal_role(AtspiRole role);
+Eina_Bool object_has_modal_role(AtspiAccessible *obj, AtspiRole role);
Eina_Bool object_has_focused_state(AtspiAccessible *obj);
Eina_Bool object_has_defunct_state(AtspiAccessible *obj);
Eina_Bool object_has_highlighted_state(AtspiAccessible *obj);
DEBUG("READING NOTIFICATION : %s", text_to_speak ? text_to_speak : "text_to_speak nil");
tw_speak_customized(text_to_speak, EINA_TRUE, EINA_FALSE, event->source, 0);
free(text_to_speak);
- } else if (object_has_modal_role(role)) {
+ } else if (object_has_modal_role(event->source, role)) {
DEBUG("Rebuilding context on modal PUSH");
timer_reschedule(atd);
}
if window object is removed. */
DEBUG("Remove Window");
window_tracker_window_remove(atd->window_tracker_data, event->source);
- } else if (object_has_modal_role(role)) {
+ } else if (object_has_modal_role(event->source, role)) {
DEBUG("Rebuilding context on modal POP");
timer_reschedule(atd);
} else if (atspi_accessible_is_equal(flat_navi_context_current_get(navigator_get_flat_navi_context(atd->view_content_changed_ecd->user_data)), event->source)) {
g_clear_object(&atd->root);
flat_navi_context_root_change(ctx, app_tracker_desktop_get(atd));
}
-
return attribute;
}
-Eina_Bool object_has_modal_role(AtspiRole role)
+static Eina_Bool _object_has_state(AtspiAccessible *obj, AtspiStateType state)
+{
+ if (!obj)
+ return EINA_FALSE;
+
+ Eina_Bool ret = EINA_FALSE;
+
+ AtspiStateSet *ss = atspi_accessible_get_state_set(obj);
+
+ if (atspi_state_set_contains(ss, state))
+ ret = EINA_TRUE;
+ g_object_unref(ss);
+ return ret;
+}
+
+Eina_Bool object_has_modal_role(AtspiAccessible *obj, AtspiRole role)
{
Eina_Bool ret = EINA_FALSE;
case ATSPI_ROLE_DIALOG:
ret = EINA_TRUE;
break;
+ case ATSPI_ROLE_COMBO_BOX:
+ ret = _object_has_state(obj, ATSPI_STATE_MODAL);
+ break;
default:
break;
}
return ret;
}
-static Eina_Bool _object_has_state(AtspiAccessible *obj, AtspiStateType state)
-{
- if (!obj)
- return EINA_FALSE;
-
- Eina_Bool ret = EINA_FALSE;
-
- AtspiStateSet *ss = atspi_accessible_get_state_set(obj);
-
- if (atspi_state_set_contains(ss, state))
- ret = EINA_TRUE;
- g_object_unref(ss);
- return ret;
-}
-
Eina_Bool object_has_defunct_state(AtspiAccessible *obj)
{
return _object_has_state(obj, ATSPI_STATE_DEFUNCT);