Evas_Object *base;
Evas_Object *progress;
+ Ecore_Event_Handler *key_down;
Ecore_Timer *hide_timer;
Eina_Bool visibility;
};
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);
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;
if (!data || !ei) {
_ERR("failed to get data and ei");
- return;
+ return ECORE_CALLBACK_PASS_ON;
}
ad = data;
_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)
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;
}
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);