From 9f96b778af5881e8f75b53096715396de1166873 Mon Sep 17 00:00:00 2001 From: "jinwoo.shin" Date: Thu, 6 Aug 2015 14:11:03 +0900 Subject: [PATCH] Add keygrab handler Change-Id: Icf5182f14a497375957a43847e19b1f0b4723640 Signed-off-by: jinwoo.shin --- src/main.c | 43 +++++++++++++++++++++++++++++++++++++------ 1 file changed, 37 insertions(+), 6 deletions(-) diff --git a/src/main.c b/src/main.c index 179ff35..08323ab 100644 --- a/src/main.c +++ b/src/main.c @@ -36,6 +36,7 @@ struct _appdata { Evas_Object *base; Evas_Object *progress; + Ecore_Event_Handler *key_down; Ecore_Timer *hide_timer; Eina_Bool visibility; }; @@ -54,6 +55,7 @@ Evas_Object *_add_win(const char *name) elm_win_role_set(win, VOLUME_WIN_ROLE); elm_win_alpha_set(win, EINA_TRUE); + elm_win_prop_focus_skip_set(win, EINA_TRUE); evas_object_resize(win, VOLUME_WIN_WIDTH, VOLUME_WIN_HEIGHT); evas_object_show(win); @@ -185,7 +187,7 @@ Eina_Bool _hide_timer(void *data) return ECORE_CALLBACK_CANCEL; } -static void _key_pressed(void *data, Evas *e, Evas_Object *obj, void *ei) +static Eina_Bool _key_down(void *data, int type, void *ei) { struct _appdata *ad; Evas_Event_Key_Down *ev; @@ -193,7 +195,7 @@ static void _key_pressed(void *data, Evas *e, Evas_Object *obj, void *ei) if (!data || !ei) { _ERR("failed to get data and ei"); - return; + return ECORE_CALLBACK_PASS_ON; } ad = data; @@ -234,6 +236,35 @@ static void _key_pressed(void *data, Evas *e, Evas_Object *obj, void *ei) _update_volume_info(ad); } + + return ECORE_CALLBACK_PASS_ON; +} + +Eina_Bool _register_keygrab(void *data) +{ + struct _appdata *ad; + + if (!data) { + _ERR("failed to get data"); + return false; + } + + ad = data; + + elm_win_keygrab_set(ad->win, KEY_VOLUMEUP, + 0, 0, 0, ELM_WIN_KEYGRAB_SHARED); + elm_win_keygrab_set(ad->win, KEY_VOLUMEUP_REMOTE, + 0, 0, 0, ELM_WIN_KEYGRAB_SHARED); + elm_win_keygrab_set(ad->win, KEY_VOLUMEDOWN, + 0, 0, 0, ELM_WIN_KEYGRAB_SHARED); + elm_win_keygrab_set(ad->win, KEY_VOLUMEDOWN_REMOTE, + 0, 0, 0, ELM_WIN_KEYGRAB_SHARED); + elm_win_keygrab_set(ad->win, KEY_MUTE, + 0, 0, 0, ELM_WIN_KEYGRAB_SHARED); + elm_win_keygrab_set(ad->win, KEY_MUTE_REMOTE, + 0, 0, 0, ELM_WIN_KEYGRAB_SHARED); + + return ECORE_CALLBACK_CANCEL; } static bool _create(void *data) @@ -278,8 +309,9 @@ static bool _create(void *data) ad->base = base; ad->progress = progress; - evas_object_event_callback_add(win, EVAS_CALLBACK_KEY_DOWN, - _key_pressed, ad); + ecore_timer_add(1, _register_keygrab, ad); + ad->key_down = ecore_event_handler_add(ECORE_EVENT_KEY_DOWN, + _key_down, ad); return true; } @@ -293,8 +325,7 @@ static void _terminate(void *data) ad = data; - evas_object_event_callback_del(ad->win, EVAS_CALLBACK_KEY_DOWN, - _key_pressed); + ecore_event_handler_del(ad->key_down); if (ad->hide_timer) ecore_timer_del(ad->hide_timer); -- 2.7.4