forked from enlightenment/efl
From: Kim Shinwoo <kimcinoo.efl@gmail.com>
Subject: [E-devel] [patch][elementary] access - add activate callback till now, accessibility has used ecore_x_mouse_*_send(). the patch has activate callback which takes place of the ecore_x_mouse_*_send() stuff. if the access module is enabled and 'double tap' is detected, elm_win will receive ECORE_X_ATOM_E_ILLUME_ACCESS_CONTROL message with ECORE_X_ATOME_E_ILLUME_ACCESS_ACTION_ACTIVATE and call the activate callback for the accessibility. that's it. SVN revision: 75978
This commit is contained in:
parent
1106692cdf
commit
0bbfd9fc0b
|
@ -442,3 +442,8 @@
|
|||
* Fix re-order animation when it doesn't end correctly.
|
||||
* Improve elm map module loading to onlt init the module needed
|
||||
when searching and not all modules.
|
||||
|
||||
2012-09-03 Shinwoo Kim (kimcinoo)
|
||||
|
||||
* Add in more access subsystem features like activation cb.
|
||||
|
||||
|
|
|
@ -290,6 +290,29 @@ _elm_access_on_highlight_hook_set(Elm_Access_Info *ac,
|
|||
ac->on_highlight_data = data;
|
||||
}
|
||||
|
||||
EAPI void
|
||||
_elm_access_activate_hook_set(Elm_Access_Info *ac,
|
||||
Elm_Access_Activate_Cb func,
|
||||
void *data)
|
||||
{
|
||||
if (!ac) return;
|
||||
ac->activate = func;
|
||||
ac->activate_data = data;
|
||||
}
|
||||
|
||||
EAPI void
|
||||
_elm_access_highlight_object_activate(Evas_Object *obj)
|
||||
{
|
||||
Evas_Object *highlight_obj;
|
||||
highlight_obj = elm_widget_focused_object_get(obj);
|
||||
|
||||
Elm_Access_Info *ac = evas_object_data_get(highlight_obj, "_elm_access");
|
||||
if (!ac) return;
|
||||
|
||||
if (ac->activate)
|
||||
ac->activate(highlight_obj, ac->activate_data);
|
||||
}
|
||||
|
||||
EAPI char *
|
||||
_elm_access_text_get(const Elm_Access_Info *ac, int type, Evas_Object *obj, Elm_Widget_Item *item)
|
||||
{
|
||||
|
|
|
@ -257,6 +257,13 @@ _access_state_cb(void *data __UNUSED__,
|
|||
return NULL;
|
||||
}
|
||||
|
||||
static void
|
||||
_access_activate_cb(Evas_Object *obj, void *data __UNUSED__)
|
||||
{
|
||||
evas_object_smart_callback_call(obj, SIG_CLICKED, NULL);
|
||||
elm_layout_signal_emit(obj, "elm,anim,activate", "elm");
|
||||
}
|
||||
|
||||
static void
|
||||
_elm_button_smart_add(Evas_Object *obj)
|
||||
{
|
||||
|
@ -281,6 +288,8 @@ _elm_button_smart_add(Evas_Object *obj)
|
|||
(_elm_access_object_get(obj), ELM_ACCESS_INFO, _access_info_cb, NULL);
|
||||
_elm_access_callback_set
|
||||
(_elm_access_object_get(obj), ELM_ACCESS_STATE, _access_state_cb, priv);
|
||||
_elm_access_activate_hook_set
|
||||
(_elm_access_object_get(obj), _access_activate_cb, NULL);
|
||||
|
||||
elm_widget_can_focus_set(obj, EINA_TRUE);
|
||||
|
||||
|
|
|
@ -546,6 +546,7 @@ typedef Eina_Bool (*Elm_Widget_Del_Pre_Cb)(void *data);
|
|||
|
||||
typedef char *(*Elm_Access_Content_Cb)(void *data, Evas_Object *obj, Elm_Widget_Item *item);
|
||||
typedef void (*Elm_Access_On_Highlight_Cb)(void *data);
|
||||
typedef void (*Elm_Access_Activate_Cb)(Evas_Object *obj, void *data);
|
||||
|
||||
struct _Elm_Access_Item
|
||||
{
|
||||
|
@ -561,6 +562,8 @@ struct _Elm_Access_Info
|
|||
Ecore_Timer *delay_timer;
|
||||
void *on_highlight_data;
|
||||
Elm_Access_On_Highlight_Cb on_highlight;
|
||||
void *activate_data;
|
||||
Elm_Access_Activate_Cb activate;
|
||||
};
|
||||
|
||||
EAPI void _elm_access_clear(Elm_Access_Info *ac);
|
||||
|
@ -583,6 +586,8 @@ EAPI Evas_Object * _elm_access_edje_object_part_object_register(Evas_Object *
|
|||
EAPI void _elm_access_widget_item_register(Elm_Widget_Item *item);
|
||||
EAPI void _elm_access_widget_item_unregister(Elm_Widget_Item *item);
|
||||
EAPI void _elm_access_on_highlight_hook_set(Elm_Access_Info *ac, Elm_Access_On_Highlight_Cb func, void *data);
|
||||
EAPI void _elm_access_activate_hook_set(Elm_Access_Info *ac, Elm_Access_Activate_Cb func, void *data);
|
||||
EAPI void _elm_access_highlight_object_activate(Evas_Object *obj);
|
||||
|
||||
/**< put this as the first member in your widget item struct */
|
||||
#define ELM_WIDGET_ITEM Elm_Widget_Item base
|
||||
|
|
|
@ -1857,7 +1857,7 @@ _elm_win_client_message(void *data,
|
|||
else if ((unsigned int)e->data.l[1] ==
|
||||
ECORE_X_ATOM_E_ILLUME_ACCESS_ACTION_ACTIVATE)
|
||||
{
|
||||
// XXX: call right access func
|
||||
_elm_access_highlight_object_activate(ELM_WIDGET_DATA(sd)->obj);
|
||||
}
|
||||
else if ((unsigned int)e->data.l[1] ==
|
||||
ECORE_X_ATOM_E_ILLUME_ACCESS_ACTION_READ)
|
||||
|
|
Loading…
Reference in New Issue