and start on allowing modified behavior when in access mode. ie turn
it on and off. just settable by env var and config file for now. SVN revision: 62591
This commit is contained in:
parent
a3592b4da6
commit
3d52581f0e
|
@ -62,16 +62,20 @@ _access_add_set(Elm_Access_Info *ac, int type)
|
|||
ac->items = eina_list_prepend(ac->items, ai);
|
||||
return ai;
|
||||
}
|
||||
|
||||
static Eina_Bool
|
||||
_access_obj_over_timeout_cb(void *data)
|
||||
{
|
||||
Elm_Access_Info *ac = evas_object_data_get(data, "_elm_access");
|
||||
if (!ac) return EINA_FALSE;
|
||||
_elm_access_read(ac, ELM_ACCESS_CANCEL, data, NULL);
|
||||
_elm_access_read(ac, ELM_ACCESS_TYPE, data, NULL);
|
||||
_elm_access_read(ac, ELM_ACCESS_INFO, data, NULL);
|
||||
_elm_access_read(ac, ELM_ACCESS_STATE, data, NULL);
|
||||
_elm_access_read(ac, ELM_ACCESS_DONE, data, NULL);
|
||||
if (_elm_config->access_mode != ELM_ACCESS_MODE_OFF)
|
||||
{
|
||||
_elm_access_read(ac, ELM_ACCESS_CANCEL, data, NULL);
|
||||
_elm_access_read(ac, ELM_ACCESS_TYPE, data, NULL);
|
||||
_elm_access_read(ac, ELM_ACCESS_INFO, data, NULL);
|
||||
_elm_access_read(ac, ELM_ACCESS_STATE, data, NULL);
|
||||
_elm_access_read(ac, ELM_ACCESS_DONE, data, NULL);
|
||||
}
|
||||
ac->delay_timer = NULL;
|
||||
return EINA_FALSE;
|
||||
}
|
||||
|
@ -87,7 +91,8 @@ _access_obj_mouse_in_cb(void *data, Evas *e __UNUSED__, Evas_Object *obj __UNUSE
|
|||
ecore_timer_del(ac->delay_timer);
|
||||
ac->delay_timer = NULL;
|
||||
}
|
||||
ac->delay_timer = ecore_timer_add(0.2, _access_obj_over_timeout_cb, data);
|
||||
if (_elm_config->access_mode != ELM_ACCESS_MODE_OFF)
|
||||
ac->delay_timer = ecore_timer_add(0.2, _access_obj_over_timeout_cb, data);
|
||||
}
|
||||
|
||||
static void
|
||||
|
@ -241,6 +246,22 @@ _elm_access_object_get(Evas_Object *obj)
|
|||
return evas_object_data_get(obj, "_elm_access");
|
||||
}
|
||||
|
||||
EAPI void
|
||||
_elm_access_object_hilight(Evas_Object *win, Evas_Object *obj)
|
||||
{
|
||||
// if hilight obj doens exist - create and attach to window
|
||||
// make sure its on a high layer
|
||||
// show it and emit signal
|
||||
// if exists, move and resize to obj object location
|
||||
// ** try use dragables to specify pos+size??
|
||||
}
|
||||
|
||||
EAPI void
|
||||
_elm_access_object_unhilight(Evas_Object *win)
|
||||
{
|
||||
// hide highlight obj is there, emit hide and then del when done
|
||||
}
|
||||
|
||||
EAPI void
|
||||
_elm_access_object_register(Evas_Object *obj, Evas_Object *hoverobj)
|
||||
{
|
||||
|
@ -256,6 +277,51 @@ _elm_access_object_register(Evas_Object *obj, Evas_Object *hoverobj)
|
|||
evas_object_data_set(obj, "_elm_access", ac);
|
||||
}
|
||||
|
||||
static void
|
||||
_access_2nd_click_del_cb(void *data __UNUSED__, Evas *e __UNUSED__, Evas_Object *obj, void *event_info __UNUSED__)
|
||||
{
|
||||
Ecore_Timer *t;
|
||||
|
||||
evas_object_event_callback_del_full(obj, EVAS_CALLBACK_DEL,
|
||||
_access_2nd_click_del_cb, NULL);
|
||||
t = evas_object_data_get(obj, "_elm_2nd_timeout");
|
||||
if (t)
|
||||
{
|
||||
ecore_timer_del(t);
|
||||
evas_object_data_del(obj, "_elm_2nd_timeout");
|
||||
}
|
||||
}
|
||||
|
||||
static Eina_Bool
|
||||
_access_2nd_click_timeout_cb(void *data)
|
||||
{
|
||||
evas_object_event_callback_del_full(data, EVAS_CALLBACK_DEL,
|
||||
_access_2nd_click_del_cb, NULL);
|
||||
evas_object_data_del(data, "_elm_2nd_timeout");
|
||||
return EINA_FALSE;
|
||||
}
|
||||
|
||||
EAPI Eina_Bool
|
||||
_elm_access_2nd_click_timeout(Evas_Object *obj)
|
||||
{
|
||||
Ecore_Timer *t;
|
||||
|
||||
t = evas_object_data_get(obj, "_elm_2nd_timeout");
|
||||
if (t)
|
||||
{
|
||||
ecore_timer_del(t);
|
||||
evas_object_data_del(obj, "_elm_2nd_timeout");
|
||||
evas_object_event_callback_del_full(obj, EVAS_CALLBACK_DEL,
|
||||
_access_2nd_click_del_cb, NULL);
|
||||
return EINA_TRUE;
|
||||
}
|
||||
t = ecore_timer_add(0.3, _access_2nd_click_timeout_cb, obj);
|
||||
evas_object_data_set(obj, "_elm_2nd_timeout", t);
|
||||
evas_object_event_callback_add(obj, EVAS_CALLBACK_DEL,
|
||||
_access_2nd_click_del_cb, NULL);
|
||||
return EINA_FALSE;
|
||||
}
|
||||
|
||||
// XXX special version for items
|
||||
//EAPI void
|
||||
//_elm_access_item_hover_register(Elm_Widget_Item *item, Evas_Object *hoverobj)
|
||||
|
|
|
@ -212,8 +212,13 @@ _activate(Evas_Object *obj)
|
|||
wd->timer = NULL;
|
||||
}
|
||||
wd->repeating = EINA_FALSE;
|
||||
_elm_access_say(E_("Clicked"));
|
||||
evas_object_smart_callback_call(obj, SIG_CLICKED, NULL);
|
||||
if ((_elm_config->access_mode == ELM_ACCESS_MODE_OFF) ||
|
||||
(_elm_access_2nd_click_timeout(obj)))
|
||||
{
|
||||
if (_elm_config->access_mode != ELM_ACCESS_MODE_OFF)
|
||||
_elm_access_say(E_("Clicked"));
|
||||
evas_object_smart_callback_call(obj, SIG_CLICKED, NULL);
|
||||
}
|
||||
}
|
||||
|
||||
static void
|
||||
|
|
|
@ -611,6 +611,7 @@ _desc_init(void)
|
|||
ELM_CONFIG_VAL(D, T, glayer_line_angular_tolerance, T_DOUBLE);
|
||||
ELM_CONFIG_VAL(D, T, glayer_flick_time_limit_ms, T_INT);
|
||||
ELM_CONFIG_VAL(D, T, glayer_long_tap_start_timeout, T_DOUBLE);
|
||||
ELM_CONFIG_VAL(D, T, access_mode, T_INT);
|
||||
#undef T
|
||||
#undef D
|
||||
#undef T_INT
|
||||
|
@ -1638,6 +1639,8 @@ _env_get(void)
|
|||
|
||||
s = getenv("ELM_DESKTOP_ENTRY");
|
||||
if (s) _elm_config->desktop_entry = !!atoi(s);
|
||||
s = getenv("ELM_ACCESS_MODE");
|
||||
if (s) _elm_config->access_mode = ELM_ACCESS_MODE_ON;
|
||||
}
|
||||
|
||||
EAPI Eina_Bool
|
||||
|
|
|
@ -82,6 +82,9 @@ extern const char *_elm_engines[];
|
|||
|
||||
#define ELM_FONT_TOKEN_STYLE ":style="
|
||||
|
||||
#define ELM_ACCESS_MODE_OFF 0
|
||||
#define ELM_ACCESS_MODE_ON 1
|
||||
|
||||
struct _Elm_Config
|
||||
{
|
||||
int config_version;
|
||||
|
@ -140,6 +143,7 @@ struct _Elm_Config
|
|||
double glayer_line_angular_tolerance;
|
||||
unsigned int glayer_flick_time_limit_ms;
|
||||
double glayer_long_tap_start_timeout;
|
||||
int access_mode;
|
||||
};
|
||||
|
||||
struct _Elm_Module
|
||||
|
|
|
@ -232,6 +232,7 @@ EAPI void _elm_access_read(Elm_Access_Info *ac, int type, Evas_Objec
|
|||
EAPI void _elm_access_say(const char *txt);
|
||||
EAPI Elm_Access_Info *_elm_access_object_get(Evas_Object *obj);
|
||||
EAPI void _elm_access_object_register(Evas_Object *obj, Evas_Object *hoverobj);
|
||||
EAPI Eina_Bool _elm_access_2nd_click_timeout(Evas_Object *obj);
|
||||
|
||||
struct _Elm_Widget_Item
|
||||
{
|
||||
|
|
|
@ -5,6 +5,7 @@
|
|||
|
||||
/* to enable this module
|
||||
export ELM_MODULES="access_output>access/api"
|
||||
export ELM_ACCESS_MODE=1
|
||||
*/
|
||||
|
||||
static void (*cb_func) (void *data);
|
||||
|
|
Loading…
Reference in New Issue