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);

-- 


Reply via email to