diff --git a/src/lib/ecore_wl2/ecore_wl2_input.c b/src/lib/ecore_wl2/ecore_wl2_input.c index 3e7fd98753..96665b9091 100644 --- a/src/lib/ecore_wl2/ecore_wl2_input.c +++ b/src/lib/ecore_wl2/ecore_wl2_input.c @@ -83,6 +83,18 @@ _ecore_wl2_mouse_dev_get(Ecore_Wl2_Input *input, int window_id) return NULL; } +static Eo * +_ecore_wl2_touch_dev_get(Ecore_Wl2_Input *input, int window_id) +{ + Ecore_Wl2_Input_Devices *devices; + + devices = _ecore_wl2_devices_get(input, window_id); + if (devices && devices->touch_dev) + return efl_ref(devices->touch_dev); + + return NULL; +} + static Eo * _ecore_wl2_seat_dev_get(Ecore_Wl2_Input *input, int window_id) { @@ -169,6 +181,8 @@ _ecore_wl2_input_mouse_move_send(Ecore_Wl2_Input *input, Ecore_Wl2_Window *windo ev->multi.root.x = input->pointer.sx; ev->multi.root.y = input->pointer.sy; ev->dev = _ecore_wl2_mouse_dev_get(input, window->id); + if (!ev->dev) + ev->dev = _ecore_wl2_touch_dev_get(input, window->id); info = _ecore_wl2_input_mouse_down_info_get(device); if (info) @@ -214,7 +228,15 @@ _ecore_wl2_input_mouse_wheel_send(Ecore_Wl2_Input *input, unsigned int axis, int ev->window = input->focus.pointer->id; ev->event_window = input->focus.pointer->id; } + else if (input->focus.touch) + { + ev->window = input->focus.touch->id; + ev->event_window = input->focus.touch->id; + } + ev->dev = _ecore_wl2_mouse_dev_get(input, ev->window); + if (!ev->dev) + ev->dev = _ecore_wl2_touch_dev_get(input, ev->window); ecore_event_add(ECORE_EVENT_MOUSE_WHEEL, ev, _input_event_cb_free, ev->dev); } @@ -305,6 +327,8 @@ _ecore_wl2_input_mouse_down_send(Ecore_Wl2_Input *input, Ecore_Wl2_Window *windo ev->window = window->id; ev->event_window = window->id; ev->dev = _ecore_wl2_mouse_dev_get(input, window->id); + if (!ev->dev) + ev->dev = _ecore_wl2_touch_dev_get(input, window->id); } ecore_event_add(ECORE_EVENT_MOUSE_BUTTON_DOWN, ev, @@ -377,6 +401,8 @@ _ecore_wl2_input_mouse_up_send(Ecore_Wl2_Input *input, Ecore_Wl2_Window *window, ev->window = window->id; ev->event_window = window->id; ev->dev = _ecore_wl2_mouse_dev_get(input, window->id); + if (!ev->dev) + ev->dev = _ecore_wl2_touch_dev_get(input, window->id); ecore_event_add(ECORE_EVENT_MOUSE_BUTTON_UP, ev, _input_event_cb_free, ev->dev);