ACCESSIBLE_READING_INFO_TYPE_DESCRIPTION = 1 << 2,
ACCESSIBLE_READING_INFO_TYPE_STATE = 1 << 3
};
-unsigned short int get_objects_attributes(AtspiAccessible *obj);
+unsigned short int get_object_reading_info_type_attributes(AtspiAccessible *obj);
void utils_a11y_bus_connection_set(Eldbus_Connection *conn);
Eldbus_Connection *utils_a11y_bus_connection_get(void);
WindowInfo* window_tracker_top_window_info_get(WindowTrackerData *wtd);
-AtspiAccessible* window_tracker_subroot_get(WindowTrackerData *wtd);
-
#endif // WINDOW_TRACKER_H
}
}
- if (default_label_enabled)
- tw_purge(EINA_TRUE);
-
gchar *id = atspi_accessible_get_unique_id(dli->obj, NULL);
DEBUG("Rebuilding navigation context - root: %s, role: %d, default_label_enabled : %s", id, dli->role, default_label_enabled ? "true" : "false");
g_free(id);
// refresh default label for newly showing page tab
DEBUG("Refreshing TAB");
timer_reschedule(atd);
+ } else if (role == ATSPI_ROLE_NOTIFICATION) {
+ // Read notification without rebuilding context
+ char *text_to_speak = NULL;
+ ReadingComposerData *rc = reading_composer_data_get(event->source);
+ text_to_speak = reading_composer_description_get(rc);
+ reading_composer_data_free(rc);
+ DEBUG("READING NOTIFICATION : %s", text_to_speak ? text_to_speak : "text_to_speak nil");
+ tw_speak_customized(text_to_speak, EINA_TRUE, EINA_TRUE, event->source, 0);
+ free(text_to_speak);
} else if (object_has_modal_role(role)) {
- // push modal to base_root stack
- DEBUG("Pushing modal: ROLE: %d", role);
- Service_Data *sd = get_pointer_to_service_data_struct();
- Eina_Bool is_text_selection_mode = navigator_get_is_text_selection_mode(sd->navigator_data);
- if (is_text_selection_mode) {
- /*TODO: this ignores toast popup providing cut, copy information.
- if other popup is showing then rebuild navigation context. */
- goto end;
- }
- if (window_tracker_subroot_get(atd->window_tracker_data)) {
- char *text_to_speak = NULL;
- ReadingComposerData *rc = reading_composer_data_get(event->source);
- text_to_speak = reading_composer_description_get(rc);
- reading_composer_data_free(rc);
- DEBUG("SPEAK : %s", text_to_speak ? text_to_speak : "text_to_speak nil");
- tw_speak_customized(text_to_speak, EINA_TRUE, EINA_TRUE, event->source, 0);
- free(text_to_speak);
- }
- else {
- timer_reschedule(atd);
- }
+ DEBUG("Rebuilding context on modal PUSH");
+ timer_reschedule(atd);
}
} else { /* Not Showing */
if (role == ATSPI_ROLE_WINDOW) {
DEBUG("Remove Window");
window_tracker_window_remove(atd->window_tracker_data, event->source);
} else if (object_has_modal_role(role)) {
- //TODO: check if source is same with modals->data
- // pop modal
- DEBUG("Pop modal");
+ 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)) {
DEBUG("Current highlighted object becomes not-showing");
}
}
} else if (!g_strcmp0(event->type, "object:property-change:accessible-name") && object_has_highlighted_state(event->source)
- && (get_objects_attributes(event->source) & ACCESSIBLE_READING_INFO_TYPE_NAME)) {
+ && (get_object_reading_info_type_attributes(event->source) & ACCESSIBLE_READING_INFO_TYPE_NAME)) {
gchar *name = atspi_accessible_get_name(event->source, NULL);
if (!name) {
ERROR("name is null");
g_free(name);
goto end;
} else if (!g_strcmp0(event->type, "object:property-change:accessible-value")) { // for reading slider and spinner value changes
- if (role == ATSPI_ROLE_SLIDER && (get_objects_attributes(event->source) & ACCESSIBLE_READING_INFO_TYPE_STATE)) {
+ if (role == ATSPI_ROLE_SLIDER && (get_object_reading_info_type_attributes(event->source) & ACCESSIBLE_READING_INFO_TYPE_STATE)) {
_read_value(event->source);
} else if (role == ATSPI_ROLE_FILLER) {
gchar *name = atspi_accessible_get_name(event->source, NULL);
g_free(name);
}
} else if (!g_strcmp0(event->type, "object:state-changed:animated") && (role == ATSPI_ROLE_LIST_ITEM)
- && (get_objects_attributes(event->source) & ACCESSIBLE_READING_INFO_TYPE_DESCRIPTION)) {
+ && (get_object_reading_info_type_attributes(event->source) & ACCESSIBLE_READING_INFO_TYPE_DESCRIPTION)) {
GError *err = NULL;
char buf[256] = "\0";
gint idx = atspi_accessible_get_index_in_parent(event->source, &err);
tw_speak_customized(buf, EINA_TRUE, EINA_TRUE, event->source, 0);
g_error_free(err);
} else if (!g_strcmp0(event->type, "object:state-changed:checked")
- && (get_objects_attributes(event->source) & ACCESSIBLE_READING_INFO_TYPE_STATE)) {
+ && (get_object_reading_info_type_attributes(event->source) & ACCESSIBLE_READING_INFO_TYPE_STATE)) {
Eina_Strbuf *buf = eina_strbuf_new();
if (event->detail1) {
if (role == ATSPI_ROLE_TOGGLE_BUTTON)
}
tw_speak_and_free(eina_strbuf_release(buf), EINA_TRUE);
} else if (!g_strcmp0(event->type, "object:state-changed:selected")
- && (get_objects_attributes(event->source) & ACCESSIBLE_READING_INFO_TYPE_STATE)) {
+ && (get_object_reading_info_type_attributes(event->source) & ACCESSIBLE_READING_INFO_TYPE_STATE)) {
gchar *name = atspi_accessible_get_name(event->source, NULL);
if (!name) {
ERROR("name is null");
return;
}
+ tw_purge(EINA_TRUE);
+
switch (role) {
case ATSPI_ROLE_POPUP_MENU:
case ATSPI_ROLE_PANEL:
}
_check_app_gesture_support(nd, root);
-
if (vc_get_sound_feedback())
smart_notification(WINDOW_STATE_CHANGE_NOTIFICATION_EVENT, 0, 0);
DEBUG("END");
return EINA_FALSE;
}
-unsigned short int get_objects_attributes(AtspiAccessible *obj)
+unsigned short int get_object_reading_info_type_attributes(AtspiAccessible *obj)
{
unsigned short int attribute = 0;
gchar *reading_info = NULL;
AtspiEventListener *listener;
AtspiAccessible *last_active_win;
AtspiAccessible *top_win;
- AtspiAccessible *subroot;
Eina_List *window_infos;
AtspiAccessible *keyboard_window;
};
}
}
-static Eina_Bool _is_window_in_stack(WindowTrackerData *wtd, AtspiAccessible *window)
-{
- Eina_List *l;
- WindowInfo *wi;
-
- EINA_LIST_FOREACH(wtd->window_infos, l, wi)
- if(wi && atspi_accessible_is_equal(wi->window, window)) return EINA_TRUE;
-
- return EINA_FALSE;
-}
-
static uint32_t _window_resource_id_get(AtspiAccessible *window)
{
uint32_t resource_id = 0;
removed_index++;
}
- if (wtd->subroot && atspi_accessible_is_equal(window, wtd->subroot)) {
- DEBUG("Remove subroot: %p ", wtd->subroot);
- wtd->subroot = NULL;
- }
-
if (!window_removed) {
gchar *id = atspi_accessible_get_unique_id(window, NULL);
DEBUG("END - try to remove not appended window: %s", id);
goto end;
}
_window_append(wtd, event->source, EINA_TRUE, EINA_FALSE, window_activate_info_type);
- wtd->subroot = NULL; //No need to keep subroot if any window gets activated
} else if (!g_strcmp0("object:state-changed:visible", event->type)
&& name && (!g_strcmp0(name, "Quickpanel Window") || !g_strcmp0(name, "volume") || !g_strcmp0(name, "Keyboard"))) {
else
_window_remove(wtd, event->source);
}
-
- if (role == ATSPI_ROLE_WINDOW) {
- if (event->detail1) { /* Visible */
- if (!_is_window_in_stack(wtd, event->source)) {
- DEBUG("Store subroot window: %p", event->source);
- wtd->subroot = event->source;
- }
- }
- else {
- DEBUG("delete subroot window: %p", event->source);
- wtd->subroot = NULL;
- }
- }
}
end:
g_free(name);
wtd->last_active_win = NULL;
wtd->top_win = NULL;
- wtd->subroot = NULL;
wtd->window_infos = NULL;
wtd->keyboard_window = NULL;
return wtd ? wtd->top_win : NULL;
}
-AtspiAccessible* window_tracker_subroot_get(WindowTrackerData *wtd)
-{
- return wtd ? wtd->subroot : NULL;
-}
IMPLEMENT_FUNCTION_MOCK1(mock_window_tracker_keyboard_window_remove, window_tracker_keyboard_window_remove, void(WindowTrackerData *));
IMPLEMENT_FUNCTION_MOCK3(mock_window_tracker_register, window_tracker_register, void(WindowTrackerData *, WindowTrackerCb, void *));
IMPLEMENT_FUNCTION_MOCK1(mock_window_tracker_shutdown, window_tracker_shutdown, void(WindowTrackerData *));
-IMPLEMENT_FUNCTION_MOCK1(mock_window_tracker_subroot_get, window_tracker_subroot_get, AtspiAccessible *(WindowTrackerData *));
IMPLEMENT_FUNCTION_MOCK1(mock_window_tracker_top_win_get, window_tracker_top_win_get, AtspiAccessible *(WindowTrackerData *));
IMPLEMENT_FUNCTION_MOCK1(mock_window_tracker_top_window_get, window_tracker_top_window_get, AtspiAccessible *(WindowTrackerData *));
IMPLEMENT_FUNCTION_MOCK1(mock_window_tracker_top_window_info_get, window_tracker_top_window_info_get, WindowInfo *(WindowTrackerData *));
DECLARE_FUNCTION_MOCK1(mock_window_tracker_keyboard_window_remove, window_tracker_keyboard_window_remove, void(WindowTrackerData *));
DECLARE_FUNCTION_MOCK3(mock_window_tracker_register, window_tracker_register, void(WindowTrackerData *, WindowTrackerCb, void *));
DECLARE_FUNCTION_MOCK1(mock_window_tracker_shutdown, window_tracker_shutdown, void(WindowTrackerData *));
-DECLARE_FUNCTION_MOCK1(mock_window_tracker_subroot_get, window_tracker_subroot_get, AtspiAccessible *(WindowTrackerData *));
DECLARE_FUNCTION_MOCK1(mock_window_tracker_top_win_get, window_tracker_top_win_get, AtspiAccessible *(WindowTrackerData *));
DECLARE_FUNCTION_MOCK1(mock_window_tracker_top_window_get, window_tracker_top_window_get, AtspiAccessible *(WindowTrackerData *));
DECLARE_FUNCTION_MOCK1(mock_window_tracker_top_window_info_get, window_tracker_top_window_info_get, WindowInfo *(WindowTrackerData *));
IMPLEMENT_FUNCTION_MOCK1(mock_window_tracker_keyboard_window_remove, window_tracker_keyboard_window_remove, void(WindowTrackerData *));
IMPLEMENT_FUNCTION_MOCK3(mock_window_tracker_register, window_tracker_register, void(WindowTrackerData *, WindowTrackerCb, void *));
IMPLEMENT_FUNCTION_MOCK1(mock_window_tracker_shutdown, window_tracker_shutdown, void(WindowTrackerData *));
-IMPLEMENT_FUNCTION_MOCK1(mock_window_tracker_subroot_get, window_tracker_subroot_get, AtspiAccessible *(WindowTrackerData *));
IMPLEMENT_FUNCTION_MOCK1(mock_window_tracker_top_win_get, window_tracker_top_win_get, AtspiAccessible *(WindowTrackerData *));
IMPLEMENT_FUNCTION_MOCK1(mock_window_tracker_top_window_get, window_tracker_top_window_get, AtspiAccessible *(WindowTrackerData *));
IMPLEMENT_FUNCTION_MOCK1(mock_window_tracker_top_window_info_get, window_tracker_top_window_info_get, WindowInfo *(WindowTrackerData *));
DECLARE_FUNCTION_MOCK1(mock_window_tracker_keyboard_window_remove, window_tracker_keyboard_window_remove, void(WindowTrackerData *));
DECLARE_FUNCTION_MOCK3(mock_window_tracker_register, window_tracker_register, void(WindowTrackerData *, WindowTrackerCb, void *));
DECLARE_FUNCTION_MOCK1(mock_window_tracker_shutdown, window_tracker_shutdown, void(WindowTrackerData *));
-DECLARE_FUNCTION_MOCK1(mock_window_tracker_subroot_get, window_tracker_subroot_get, AtspiAccessible *(WindowTrackerData *));
DECLARE_FUNCTION_MOCK1(mock_window_tracker_top_win_get, window_tracker_top_win_get, AtspiAccessible *(WindowTrackerData *));
DECLARE_FUNCTION_MOCK1(mock_window_tracker_top_window_get, window_tracker_top_window_get, AtspiAccessible *(WindowTrackerData *));
DECLARE_FUNCTION_MOCK1(mock_window_tracker_top_window_info_get, window_tracker_top_window_info_get, WindowInfo *(WindowTrackerData *));