From 8f9f17e184eddfbc31454c5aa635af79038a3b59 Mon Sep 17 00:00:00 2001 From: Shinwoo Kim Date: Sat, 23 Mar 2013 10:46:40 +0900 Subject: [PATCH] [access] do not call timer callback directly Change-Id: I7102e6996ef75a89154f547733d85012e7887374 --- src/lib/elm_access.c | 48 ++++++++++++++++++++++++++++++++---------------- 1 file changed, 32 insertions(+), 16 deletions(-) diff --git a/src/lib/elm_access.c b/src/lib/elm_access.c index 038fee0..e566716 100644 --- a/src/lib/elm_access.c +++ b/src/lib/elm_access.c @@ -146,6 +146,22 @@ _access_highlight_object_get(Evas_Object *obj) return ho; } +static void +_access_highlight_read(Elm_Access_Info *ac, Evas_Object *obj) +{ + if (_elm_config->access_mode != ELM_ACCESS_MODE_OFF) + { + if (ac->on_highlight) ac->on_highlight(ac->on_highlight_data); + _elm_access_object_hilight(obj); + _elm_access_read(ac, ELM_ACCESS_CANCEL, obj); + _elm_access_read(ac, ELM_ACCESS_TYPE, obj); + _elm_access_read(ac, ELM_ACCESS_INFO, obj); + _elm_access_read(ac, ELM_ACCESS_STATE, obj); + _elm_access_read(ac, ELM_ACCESS_CONTEXT_INFO, obj); + _elm_access_read(ac, ELM_ACCESS_DONE, obj); + } +} + static Eina_Bool _access_obj_over_timeout_cb(void *data) { @@ -154,23 +170,12 @@ _access_obj_over_timeout_cb(void *data) if (!data) return EINA_FALSE; - ho = _access_highlight_object_get(data); - if (ho == data) return EINA_FALSE; - ac = evas_object_data_get(data, "_elm_access"); if (!ac) return EINA_FALSE; - if (_elm_config->access_mode != ELM_ACCESS_MODE_OFF) - { - if (ac->on_highlight) ac->on_highlight(ac->on_highlight_data); - _elm_access_object_hilight(data); - _elm_access_read(ac, ELM_ACCESS_CANCEL, data); - _elm_access_read(ac, ELM_ACCESS_INFO, data); - _elm_access_read(ac, ELM_ACCESS_TYPE, data); - _elm_access_read(ac, ELM_ACCESS_STATE, data); - _elm_access_read(ac, ELM_ACCESS_CONTEXT_INFO, data); - _elm_access_read(ac, ELM_ACCESS_DONE, data); - } + ho = _access_highlight_object_get(data); + if (ho != data) _access_highlight_read(ac, data); + ac->delay_timer = NULL; return EINA_FALSE; } @@ -371,7 +376,18 @@ _elm_access_widget_item_access_order_unset(Elm_Widget_Item *item) EAPI void _elm_access_highlight_set(Evas_Object* obj) { - _access_obj_over_timeout_cb(obj); + Elm_Access_Info *ac; + Evas_Object *ho; + + if (!obj) return; + + ho = _access_highlight_object_get(obj); + if (ho == obj) return; + + ac = evas_object_data_get(obj, "_elm_access"); + if (!ac) return; + + _access_highlight_read(ac, obj); } EAPI void @@ -974,7 +990,7 @@ elm_access_say(const char *text) EAPI void elm_access_highlight_set(Evas_Object* obj) { - _access_obj_over_timeout_cb(obj); + _elm_access_highlight_set(obj); } EAPI void -- 2.7.4