#include "efl_access.eo.legacy.h"
#endif
+// TIZEN_ONLY(20171114): atspi: expose highlight information on atspi
/*
* Sets a particilar state type for given state set.
*/
-#define STATE_TYPE_SET(state_set, type) (state_set|= (1ULL << type))
+#define STATE_TYPE_SET(state_set, type) (state_set |= ((Efl_Access_State_Set)1 << type))
/**
* Unsets a particilar state type for given state set.
*/
-#define STATE_TYPE_UNSET(state_set, type) (state_set &= ~(1ULL << type))
+#define STATE_TYPE_UNSET(state_set, type) (state_set &= ~((Efl_Access_State_Set)1 << type))
/**
* Gets value of a particilar state type for given state set.
*/
-#define STATE_TYPE_GET(state_set, type) (state_set & (1ULL << type))
+#define STATE_TYPE_GET(state_set, type) (state_set & ((Efl_Access_State_Set)1 << type))
+//
/**
* Free Efl_Access_Attributes_List
#define EFL_ACCESS_PROTECTED
#define EFL_ACCESS_WIDGET_ACTION_PROTECTED
+// TIZEN_ONLY(20171114): atspi: expose highlight information on atspi
+#define EFL_ACCESS_COMPONENT_PROTECTED
+//
+
#include <Elementary.h>
#include "elm_priv.h"
return ret;
}
+// TIZEN_ONLY(20171114): atspi: expose highlight information on atspi
+EOLIAN static Eina_Bool
+_elm_access_efl_access_component_highlight_grab(Eo *obj, void *pd EINA_UNUSED)
+{
+ if (!_access_action_callback_call(obj, ELM_ACCESS_ACTION_HIGHLIGHT, NULL))
+ efl_access_component_highlight_grab(efl_super(obj, ELM_ACCESS_CLASS));
+
+ efl_access_state_changed_signal_emit(obj, EFL_ACCESS_STATE_HIGHLIGHTED, EINA_TRUE);
+ return EINA_TRUE;
+}
+
+EOLIAN static Eina_Bool
+_elm_access_efl_access_component_highlight_clear(Eo *obj, void *pd EINA_UNUSED)
+{
+ if (!_access_action_callback_call(obj, ELM_ACCESS_ACTION_UNHIGHLIGHT, NULL))
+ efl_access_component_highlight_clear(efl_super(obj, ELM_ACCESS_CLASS));
+
+ efl_access_state_changed_signal_emit(obj, EFL_ACCESS_STATE_HIGHLIGHTED, EINA_FALSE);
+ return EINA_TRUE;
+}
+//
+
/* Internal EO APIs and hidden overrides */
#define ELM_ACCESS_EXTRA_OPS \
Elm.Widget.on_focus_update;
Efl.Access.Widget.Action.elm_actions { get; }
Efl.Access.state_set { get; }
+ // TIZEN_ONLY(20171114): atspi: expose highlight information on atspi
+ Efl.Access.Component.highlight_grab;
+ Efl.Access.Component.highlight_clear;
+ //
}
}
Efl.Access.state_set { get; }
Efl.Access.name { get; }
Efl.Access.Widget.Action.elm_actions { get; }
+ // TIZEN_ONLY(20171114): atspi: expose highlight information on atspi
+ Efl.Access.Component.highlight_grab;
+ Efl.Access.Component.highlight_clear;
+ //
}
}
Ecore_Wl2_Window *wlwin;
#endif
//
- Evas_Object *top;
+ Evas_Object *top = NULL;
int sx = -1, sy = -1, sw = -1, sh = -1;
ELM_CONFORMANT_DATA_GET(obj, sd);
elm_gengrid_item_show(eo_it, ELM_GENGRID_ITEM_SCROLLTO_IN);
elm_object_accessibility_highlight_set(VIEW(it), EINA_TRUE);
-
+ //TIZEN_ONLY(20170717) : expose highlight information on atspi
+ efl_event_callback_call(WIDGET(it), EFL_ACCESS_EVENT_ACTIVE_DESCENDANT_CHANGED, eo_it);
+ //
return EINA_TRUE;
}
_elm_gengrid_item_efl_access_component_highlight_clear(Eo *eo_it EINA_UNUSED, Elm_Gen_Item *it)
{
elm_object_accessibility_highlight_set(VIEW(it), EINA_FALSE);
-
+ //TIZEN_ONLY(20170717) : expose highlight information on atspi
+ efl_event_callback_call(WIDGET(it), EFL_ACCESS_EVENT_ACTIVE_DESCENDANT_CHANGED, eo_it);
+ //
return EINA_TRUE;
}
//
}
static void
-_item_position(Elm_Gen_Item *it,
+_item_position(Elm_Gen_Item *eo_it,
Evas_Object *view,
Evas_Coord it_x,
Evas_Coord it_y)
{
- if (!it) return;
+ if (!eo_it) return;
if (!view) return;
- ELM_GENLIST_DATA_GET_FROM_ITEM(it, sd);
+ ELM_GENLIST_DATA_GET_FROM_ITEM(eo_it, sd);
+
+ //TIZEN_ONLY(20160419) : expose highlight information on atspi
+ if ((void*)view == _elm_object_accessibility_currently_highlighted_get())
+ {
+ Elm_Genlist_Data * sd = eo_it->item->wsd;
+ int x,y,w,h;
+ evas_object_geometry_get(sd->obj, &x, &y, &w, &h);
+
+ Elm_Gen_Item * next_previous_item = NULL;
+ if ((it_y + eo_it->item->h/2) < y)
+ {
+ next_previous_item = ELM_GEN_ITEM_FROM_INLIST(EINA_INLIST_GET(eo_it)->next);
+ }
+ else if ((it_y + eo_it->item->h/2) > y + h)
+ {
+ next_previous_item = ELM_GEN_ITEM_FROM_INLIST(EINA_INLIST_GET(eo_it)->prev);
+ }
+
+ if (next_previous_item)
+ efl_access_component_highlight_grab(EO_OBJ(next_previous_item));
+ }
+ //
evas_event_freeze
(evas_object_evas_get(sd->obj));
- evas_object_resize(view, it->item->w, it->item->h);
+ evas_object_resize(view, eo_it->item->w, eo_it->item->h);
evas_object_move(view, it_x, it_y);
evas_object_show(view);
evas_event_thaw(evas_object_evas_get(sd->obj));
return _elm_widget_item_accessible_plain_name_get(eo_it, data->label);
}
+
+
//TIZEN_ONLY(20171114): Region show on item elements fixed
EOLIAN static Eina_Bool
_elm_list_item_efl_access_component_highlight_clear(Eo *eo_it EINA_UNUSED, Elm_List_Item_Data *it)
{
elm_object_accessibility_highlight_set(VIEW(it), EINA_FALSE);
-
+ // TIZEN_ONLY(20171114): atspi: expose highlight information on atspi
+ efl_access_state_changed_signal_emit(eo_it, EFL_ACCESS_STATE_HIGHLIGHTED, EINA_FALSE);
+ //
return EINA_TRUE;
}
//
return EINA_FALSE;
}
+
/* Standard widget overrides */
ELM_WIDGET_KEY_DOWN_DEFAULT_IMPLEMENT(elm_list, Elm_List_Data)
else
elm_list_item_show(eo_it);
+ // TIZEN_ONLY(20171114): atspi: expose highlight information on atspi
+ efl_access_state_changed_signal_emit(eo_it, EFL_ACCESS_STATE_HIGHLIGHTED, EINA_TRUE);
+ //
ret = efl_access_component_highlight_grab(efl_super(eo_it, ELM_LIST_ITEM_CLASS));
return ret;
}
{
elm_toolbar_item_show(eo_it, ELM_TOOLBAR_ITEM_SCROLLTO_IN);
elm_object_accessibility_highlight_set(VIEW(it), EINA_TRUE);
+ // TIZEN_ONLY(20171114): atspi: expose highlight information on atspi
+ efl_event_callback_call(WIDGET(it), EFL_ACCESS_EVENT_ACTIVE_DESCENDANT_CHANGED, eo_it);
+ //
return EINA_TRUE;
}
_elm_toolbar_item_efl_access_component_highlight_clear(Eo *eo_it EINA_UNUSED, Elm_Toolbar_Item_Data *it)
{
elm_object_accessibility_highlight_set(VIEW(it), EINA_FALSE);
+ // TIZEN_ONLY(20171114): atspi: expose highlight information on atspi
+ efl_event_callback_call(WIDGET(it), EFL_ACCESS_EVENT_ACTIVE_DESCENDANT_CHANGED, eo_it);
+ //
return EINA_TRUE;
}
//
Efl.Ui.Item.selected { get; set; }
Efl.Ui.Item.prev { get; }
Efl.Ui.Item.next { get; }
-// TIZEN_ONLY(20171114): Add accessibility highlight for toolbar items f919df709e670600fcea71c3001a5ce5221b61e0
+ // TIZEN_ONLY(20171114): atspi: expose highlight information on atspi
Efl.Access.Component.highlight_grab;
Efl.Access.Component.highlight_clear;
-//
+ //
}
}
}
EOLIAN static Efl_Access_State_Set
-_elm_widget_item_efl_access_state_set_get(Eo *eo_item,
- Elm_Widget_Item_Data *item EINA_UNUSED)
+_elm_widget_item_efl_access_state_set_get(Eo *eo_item, Elm_Widget_Item_Data *item)
{
Efl_Access_State_Set states = 0;
if (_elm_widget_item_onscreen_is(eo_item))
STATE_TYPE_SET(states, EFL_ACCESS_STATE_SHOWING);
+ //TIZEN_ONLY(20170717) : expose highlight information on atspi
+ if (item->can_highlight)
+ STATE_TYPE_SET(states, EFL_ACCESS_STATE_HIGHLIGHTABLE);
+
+ if (_elm_object_accessibility_currently_highlighted_get() == (void*)item->view)
+ STATE_TYPE_SET(states, EFL_ACCESS_STATE_HIGHLIGHTED);
+ //
return states;
}
}
EOLIAN static Eo *
-_elm_widget_efl_object_constructor(Eo *obj, Elm_Widget_Smart_Data *sd EINA_UNUSED)
+_elm_widget_efl_object_constructor(Eo *obj, Elm_Widget_Smart_Data *sd)
{
Eo *parent = NULL;
sd->on_create = EINA_FALSE;
efl_access_role_set(obj, EFL_ACCESS_ROLE_UNKNOWN);
+ //TIZEN_ONLY(20170717) : expose highlight information on atspi
+ sd->can_highlight = EINA_TRUE;
+ //
efl_event_callback_add(obj, EFL_UI_FOCUS_OBJECT_EVENT_FOCUS_CHANGED, _focus_event_changed, NULL);
return efl_isa(parent, EFL_ACCESS_MIXIN) ? parent : NULL;
}
+
EOLIAN static Efl_Access_State_Set
-_elm_widget_efl_access_state_set_get(Eo *obj, Elm_Widget_Smart_Data *pd EINA_UNUSED)
+_elm_widget_efl_access_state_set_get(Eo *obj, Elm_Widget_Smart_Data *pd)
{
Efl_Access_State_Set states = 0;
STATE_TYPE_SET(states, EFL_ACCESS_STATE_SENSITIVE);
}
+ //TIZEN_ONLY(20170717) : expose highlight information on atspi
+ if (pd->can_highlight)
+ STATE_TYPE_SET(states, EFL_ACCESS_STATE_HIGHLIGHTABLE);
+
+ if (_elm_object_accessibility_currently_highlighted_get() == (void*)pd->obj)
+ STATE_TYPE_SET(states, EFL_ACCESS_STATE_HIGHLIGHTED);
+ //
+
return states;
}
Eina_Bool provider_lookup : 1; /**< This is true when efl_provider_find is currently walking the tree */
Eina_Bool legacy : 1; /**< Widget was created with a legacy API, not efl_add() */
Eina_Bool has_shadow : 1;
+ ///TIZEN_ONLY(20170717) : expose highlight information on atspi
+ Eina_Bool can_highlight : 1; /**< true if widget have at-spi HIGHLIGHTABLE state */
+ ///
} Elm_Widget_Smart_Data;
typedef Elm_Widget_Smart_Data Efl_Ui_Widget_Data;
// Evas_Object *_elm_win_accessibility_highlight_get(Evas_Object *win);
// //
void _elm_win_object_set_accessibility_highlight(Evas_Object *win, Evas_Object *obj);
+// TIZEN_ONLY(20171114): atspi: expose highlight information on atspi
+void *_elm_object_accessibility_currently_highlighted_get();
+//
EAPI void _elm_access_clear(Elm_Access_Info *ac);
EAPI void _elm_access_text_set(Elm_Access_Info *ac, int type, const char *text);
Eina_Bool on_deletion : 1;
Eina_Bool on_translate : 1;
Eina_Bool still_in : 1;
+ ///TIZEN_ONLY(20170717) : expose highlight information on atspi
+ Eina_Bool can_highlight : 1; /**< true if widget have at-spi HIGHLIGHTABLE state */
+ ///
};
#define ELM_NEW(t) calloc(1, sizeof(t))