static Eina_Bool _ecore_event_evas_key(Ecore_Event_Key *e, Ecore_Event_Press press) { Ecore_Input_Window *lookup; lookup = _ecore_event_window_match(e->event_window); if (!lookup) return ECORE_CALLBACK_PASS_ON; ecore_event_evas_modifier_lock_update(lookup->evas, e->modifiers); if (press == ECORE_DOWN) evas_event_feed_key_down_with_keycode(lookup->evas, e->keyname, e->key, e->string, e->compose, e->timestamp, e->data, e->keycode); else evas_event_feed_key_up_with_keycode(lookup->evas, e->keyname, e->key, e->string, e->compose, e->timestamp, e->data, e->keycode); return ECORE_CALLBACK_PASS_ON; }
static Eina_Bool _ecore_event_evas_mouse_button(Ecore_Event_Mouse_Button *e, Ecore_Event_Press press) { Ecore_Input_Window *lookup; Evas_Button_Flags flags = EVAS_BUTTON_NONE; lookup = _ecore_event_window_match(e->event_window); if (!lookup) return ECORE_CALLBACK_RENEW; if (e->double_click) flags |= EVAS_BUTTON_DOUBLE_CLICK; if (e->triple_click) flags |= EVAS_BUTTON_TRIPLE_CLICK; if (e->multi.device == 0) { ecore_event_evas_modifier_lock_update(lookup->evas, e->modifiers); if (press == ECORE_DOWN) evas_event_feed_mouse_down(lookup->evas, e->buttons, flags, e->timestamp, NULL); else evas_event_feed_mouse_up(lookup->evas, e->buttons, flags, e->timestamp, NULL); } else { if (press == ECORE_DOWN) { if (lookup->down_multi) lookup->down_multi(lookup->window, e->multi.device, e->x, e->y, e->multi.radius, e->multi.radius_x, e->multi.radius_y, e->multi.pressure, e->multi.angle, e->multi.x, e->multi.y, flags, e->timestamp); else evas_event_feed_multi_down(lookup->evas, e->multi.device, e->x, e->y, e->multi.radius, e->multi.radius_x, e->multi.radius_y, e->multi.pressure, e->multi.angle, e->multi.x, e->multi.y, flags, e->timestamp, NULL); } else { if (lookup->up_multi) lookup->up_multi(lookup->window, e->multi.device, e->x, e->y, e->multi.radius, e->multi.radius_x, e->multi.radius_y, e->multi.pressure, e->multi.angle, e->multi.x, e->multi.y, flags, e->timestamp); else evas_event_feed_multi_up(lookup->evas, e->multi.device, e->x, e->y, e->multi.radius, e->multi.radius_x, e->multi.radius_y, e->multi.pressure, e->multi.angle, e->multi.x, e->multi.y, flags, e->timestamp, NULL); } } return ECORE_CALLBACK_RENEW; }
static Eina_Bool _ecore_event_evas_mouse_button_cancel(Ecore_Event_Mouse_Button *e) { Ecore_Input_Window *lookup; Ecore_Event_Last *eel; Eina_List *l; lookup = _ecore_event_window_match(e->event_window); if (!lookup) return ECORE_CALLBACK_PASS_ON; INF("ButtonEvent cancel, device(%d), button(%d)", e->multi.device, e->buttons); evas_event_feed_mouse_cancel(lookup->evas, e->timestamp, NULL); //the number of last event is small, simple check is ok. EINA_LIST_FOREACH(_last_events, l, eel) { Ecore_Input_Action act = _ecore_event_last_check(eel, ECORE_CANCEL); INF("ButtonEvent cancel, dev(%d), button(%d), last_press(%d), action(%d)", eel->device, eel->buttons, eel->state, act); if (act == ECORE_INPUT_CONTINUE) eel->state = ECORE_INPUT_CANCEL; }
e->multi.pressure, e->multi.angle, e->multi.x, e->multi.y, flags, e->timestamp, NULL); } } return ECORE_CALLBACK_RENEW; } EAPI Eina_Bool ecore_event_evas_mouse_move(void *data __UNUSED__, int type __UNUSED__, void *event) { Ecore_Event_Mouse_Move *e; Ecore_Input_Window *lookup; e = event; lookup = _ecore_event_window_match(e->event_window); if (!lookup) return ECORE_CALLBACK_RENEW; if (e->multi.device == 0) { ecore_event_evas_modifier_lock_update(lookup->evas, e->modifiers); if (lookup->move_mouse) lookup->move_mouse(lookup->window, e->x, e->y, e->timestamp); else evas_event_feed_mouse_move(lookup->evas, e->x, e->y, e->timestamp, NULL); } else { if (lookup->move_multi) lookup->move_multi(lookup->window, e->multi.device, e->x, e->y, e->multi.radius,