raster pushed a commit to branch master.

http://git.enlightenment.org/core/efl.git/commit/?id=ea7dd2a9c29b96d9bc648feccb1270b4788529d6

commit ea7dd2a9c29b96d9bc648feccb1270b4788529d6
Author: Carsten Haitzler (Rasterman) <ras...@rasterman.com>
Date:   Wed Jul 12 15:43:41 2017 +0900

    evas mouse in/out/move event fix to remove "invalid move"
    
    this should fix T5582 "properly" by emitting a move after an in only
    if pointer x,y changed. this fixes rage and i hope still should handle
    the original issue. let me know if it doesn't.
    
    @fix
---
 src/lib/evas/canvas/evas_events.c | 60 +++++++++++++++++++++++++++------------
 1 file changed, 42 insertions(+), 18 deletions(-)

diff --git a/src/lib/evas/canvas/evas_events.c 
b/src/lib/evas/canvas/evas_events.c
index 82a040765c..e6e3efffc5 100644
--- a/src/lib/evas/canvas/evas_events.c
+++ b/src/lib/evas/canvas/evas_events.c
@@ -738,9 +738,13 @@ _evas_event_source_mouse_move_events(Evas_Object *eo_obj, 
Evas *eo_e,
                         ev->action = EFL_POINTER_ACTION_IN;
                         evas_object_event_callback_call(eo_child, child, 
EVAS_CALLBACK_MOUSE_IN, evt,
                                                         event_id2, 
EFL_EVENT_POINTER_IN);
-                        ev->action = EFL_POINTER_ACTION_MOVE;
-                        evas_object_event_callback_call(eo_child, child, 
EVAS_CALLBACK_MOUSE_MOVE, evt,
-                                                        event_id2, 
EFL_EVENT_POINTER_MOVE);
+                        if ((ev->cur.x != ev->prev.x) &&
+                            (ev->cur.y != ev->prev.y))
+                          {
+                             ev->action = EFL_POINTER_ACTION_MOVE;
+                             evas_object_event_callback_call(eo_child, child, 
EVAS_CALLBACK_MOUSE_MOVE, evt,
+                                                             event_id2, 
EFL_EVENT_POINTER_MOVE);
+                          }
                         if (e->delete_me) break;
                      }
                 }
@@ -1224,9 +1228,13 @@ _evas_event_source_mouse_in_events(Evas_Object *eo_obj, 
Evas *eo_e,
              ev->action = EFL_POINTER_ACTION_IN;
              evas_object_event_callback_call(eo_child, child, 
EVAS_CALLBACK_MOUSE_IN, evt,
                                              event_id, EFL_EVENT_POINTER_IN);
-             ev->action = EFL_POINTER_ACTION_MOVE;
-             evas_object_event_callback_call(eo_child, child, 
EVAS_CALLBACK_MOUSE_MOVE, evt,
-                                             event_id, EFL_EVENT_POINTER_MOVE);
+             if ((ev->cur.x != ev->prev.x) &&
+                 (ev->cur.y != ev->prev.y))
+               {
+                  ev->action = EFL_POINTER_ACTION_MOVE;
+                  evas_object_event_callback_call(eo_child, child, 
EVAS_CALLBACK_MOUSE_MOVE, evt,
+                                                  event_id, 
EFL_EVENT_POINTER_MOVE);
+               }
              if (e->delete_me || e->is_frozen) break;
           }
      }
@@ -1658,9 +1666,13 @@ _post_up_handle(Evas_Public_Data *e, Efl_Input_Pointer 
*parent_ev,
                   ev->action = EFL_POINTER_ACTION_IN;
                   evas_object_event_callback_call(eo_obj_itr, obj_itr, 
EVAS_CALLBACK_MOUSE_IN, evt,
                                                   event_id, 
EFL_EVENT_POINTER_IN);
-                  ev->action = EFL_POINTER_ACTION_MOVE;
-                  evas_object_event_callback_call(eo_obj_itr, obj_itr, 
EVAS_CALLBACK_MOUSE_MOVE, evt,
-                                                  event_id, 
EFL_EVENT_POINTER_MOVE);
+                  if ((ev->cur.x != ev->prev.x) &&
+                      (ev->cur.y != ev->prev.y))
+                    {
+                       ev->action = EFL_POINTER_ACTION_MOVE;
+                       evas_object_event_callback_call(eo_obj_itr, obj_itr, 
EVAS_CALLBACK_MOUSE_MOVE, evt,
+                                                       event_id, 
EFL_EVENT_POINTER_MOVE);
+                    }
                   if ((obj_itr->proxy->is_proxy) &&
                       (obj_itr->proxy->src_events))
                     _evas_event_source_mouse_in_events(eo_obj_itr, eo_e, evt, 
event_id);
@@ -2287,9 +2299,13 @@ _canvas_event_feed_mouse_move_internal(Evas_Public_Data 
*e, Efl_Input_Pointer_Da
                        ev->action = EFL_POINTER_ACTION_IN;
                        evas_object_event_callback_call(eo_obj, obj, 
EVAS_CALLBACK_MOUSE_IN, evt,
                                                        event_id, 
EFL_EVENT_POINTER_IN);
-                       ev->action = EFL_POINTER_ACTION_MOVE;
-                       evas_object_event_callback_call(eo_obj, obj, 
EVAS_CALLBACK_MOUSE_MOVE, evt,
-                                                       event_id, 
EFL_EVENT_POINTER_MOVE);
+                        if ((ev->cur.x != ev->prev.x) &&
+                            (ev->cur.y != ev->prev.y))
+                          {
+                             ev->action = EFL_POINTER_ACTION_MOVE;
+                             evas_object_event_callback_call(eo_obj, obj, 
EVAS_CALLBACK_MOUSE_MOVE, evt,
+                                                             event_id, 
EFL_EVENT_POINTER_MOVE);
+                          }
                        if ((obj->proxy->is_proxy) &&
                            (obj->proxy->src_events))
                          _evas_event_source_mouse_in_events(eo_obj, eo_e, evt, 
event_id);
@@ -2426,9 +2442,13 @@ nogrep:
                   ev->action = EFL_POINTER_ACTION_IN;
                   evas_object_event_callback_call(eo_obj, obj, 
EVAS_CALLBACK_MOUSE_IN, evt,
                                                   event_id, 
EFL_EVENT_POINTER_IN);
-                  ev->action = EFL_POINTER_ACTION_MOVE;
-                  evas_object_event_callback_call(eo_obj, obj, 
EVAS_CALLBACK_MOUSE_MOVE, evt,
-                                                  event_id, 
EFL_EVENT_POINTER_MOVE);
+                  if ((ev->cur.x != ev->prev.x) &&
+                      (ev->cur.y != ev->prev.y))
+                    {
+                       ev->action = EFL_POINTER_ACTION_MOVE;
+                       evas_object_event_callback_call(eo_obj, obj, 
EVAS_CALLBACK_MOUSE_MOVE, evt,
+                                                       event_id, 
EFL_EVENT_POINTER_MOVE);
+                    }
                   if ((obj->proxy->is_proxy) && (obj->proxy->src_events))
                     _evas_event_source_mouse_in_events(eo_obj, eo_e, evt, 
event_id);
                   if (e->delete_me) break;
@@ -2561,9 +2581,13 @@ _canvas_event_feed_mouse_in_internal(Evas *eo_e, 
Efl_Input_Pointer_Data *ev)
              ev->action = EFL_POINTER_ACTION_IN;
              evas_object_event_callback_call(eo_obj, obj, 
EVAS_CALLBACK_MOUSE_IN, evt,
                                              event_id, EFL_EVENT_POINTER_IN);
-             ev->action = EFL_POINTER_ACTION_MOVE;
-             evas_object_event_callback_call(eo_obj, obj, 
EVAS_CALLBACK_MOUSE_MOVE, evt,
-                                             event_id, EFL_EVENT_POINTER_MOVE);
+             if ((ev->cur.x != ev->prev.x) &&
+                 (ev->cur.y != ev->prev.y))
+               {
+                  ev->action = EFL_POINTER_ACTION_MOVE;
+                  evas_object_event_callback_call(eo_obj, obj, 
EVAS_CALLBACK_MOUSE_MOVE, evt,
+                                                  event_id, 
EFL_EVENT_POINTER_MOVE);
+               }
              if ((obj->proxy->is_proxy) && (obj->proxy->src_events))
                _evas_event_source_mouse_in_events(eo_obj, eo_e, evt, event_id);
              if (e->delete_me || e->is_frozen) break;

-- 


Reply via email to