devilhorns pushed a commit to branch master. http://git.enlightenment.org/core/efl.git/commit/?id=49ef37457adce6f7ac2fee6a1d4bf8b81806b47a
commit 49ef37457adce6f7ac2fee6a1d4bf8b81806b47a Author: Duna Oh <duna...@samsung.com> Date: Wed Jan 13 10:10:05 2016 -0500 ecore_wayland: send mouse_move when sets touch_focus window in cb_touch_down Summary: When user touches the screen, ecore_drm generates MOUSE_MOVE event before MOUSE_BUTTON_DOWN. But when ecore_wayland gets touch_motion before touch_down, touch_focus window is NULL and sending MOUSE_MOVE event fails. Also in terms of 'touch' input, touch_focus needs be set in cb_touch_down, not in cb_pointer_enter. So this commit makes sure that ecore_wayland generates MOUSE_MOVE when touch_focus is set. @fix Test Plan: when the application is launched for first time, user clicks on any area of the screen. We can see the posion of touch event wrong. Reviewers: raster, zmike, devilhorns, gwanglim, ManMower Reviewed By: ManMower Subscribers: jpeg, JHyun, cedric, input.hacker Differential Revision: https://phab.enlightenment.org/D3555 --- src/lib/ecore_wayland/ecore_wl_input.c | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/src/lib/ecore_wayland/ecore_wl_input.c b/src/lib/ecore_wayland/ecore_wl_input.c index 09d1d2f..a69932f 100644 --- a/src/lib/ecore_wayland/ecore_wl_input.c +++ b/src/lib/ecore_wayland/ecore_wl_input.c @@ -987,7 +987,6 @@ _ecore_wl_input_cb_pointer_enter(void *data, struct wl_pointer *pointer EINA_UNU { win->pointer_device = input; input->pointer_focus = win; - input->touch_focus = win; if (win->pointer.set) { @@ -1117,13 +1116,17 @@ _ecore_wl_input_cb_touch_down(void *data, struct wl_touch *touch EINA_UNUSED, un if (!(win = ecore_wl_window_surface_find(surface))) return; - input->touch_focus = win; input->timestamp = timestamp; input->display->serial = serial; input->sx = wl_fixed_to_int(x); input->sy = wl_fixed_to_int(y); - //_ecore_wl_input_mouse_move_send(input, input->touch_focus, timestamp, id); + if (input->touch_focus != win) + { + input->touch_focus = win; + _ecore_wl_input_mouse_move_send(input, input->touch_focus, timestamp, id); + } + if (!input->grab_count) { _ecore_wl_input_cb_pointer_enter(data, NULL, serial, surface, x, y); --