evas_events: Use ecore mouse device instead of default mouse device 47/190047/1
authorJaehyun Cho <jae_hyun.cho@samsung.com>
Thu, 26 Jul 2018 03:01:42 +0000 (12:01 +0900)
committerHosang Kim <hosang12.kim@samsung.com>
Thu, 27 Sep 2018 01:49:20 +0000 (10:49 +0900)
In Tizen, ecore uses mouse device handle corresponding to actual mouse
device.
However, evas uses both ecore mouse device handles and default mouse
handle at the same time.
This causes that "mouse_in" state is not preserved.
Consequently, mouse in/out callback is not called correctly.

To resolve above issue, evas stores the last activated ecore mouse
device handle to "last_mouse" variable.

This patch should be applied with
00004cb2e36842c41b866027ae7f486c6a9ad204

Change-Id: I5da9da5662c55af0df191c9a876487831f5f33d9
Signed-off-by: Jaehyun Cho <jae_hyun.cho@samsung.com>
src/lib/evas/canvas/evas_events.c

index 9bcedec..10c2cbd 100644 (file)
@@ -4041,7 +4041,11 @@ _efl_canvas_object_efl_canvas_pointer_pointer_inside_get(const Eo *eo_obj,
    EVAS_OBJECT_DATA_ALIVE_CHECK(obj, EINA_FALSE);
 
    if (!pointer)
-     pointer = obj->layer->evas->default_mouse;
+     //TIZEN_ONLY(20180530): add storing last mouse device.
+     //pointer = obj->layer->evas->default_mouse;
+     pointer = (obj->layer->evas->last_mouse ? obj->layer->evas->last_mouse :
+                obj->layer->evas->default_mouse);
+     //
 
    if (!pointer) return EINA_FALSE;
 
@@ -4379,7 +4383,14 @@ _evas_canvas_event_pointer_in_rect_mouse_move_feed(Evas_Public_Data *edata,
           continue;
         if ((in_objects_list && eina_list_data_find(pseat->object.in, obj)) || !in_objects_list)
           {
-             Evas_Pointer_Data *pdata = EINA_INLIST_CONTAINER_GET(pseat->pointers, Evas_Pointer_Data);
+             //TIZEN_ONLY(20180530): add storing last mouse device.
+             //Evas_Pointer_Data *pdata = EINA_INLIST_CONTAINER_GET(pseat->pointers, Evas_Pointer_Data);
+             Evas_Pointer_Data *pdata = NULL;
+             if (edata->last_mouse)
+               pdata = _evas_pointer_data_by_device_get(edata, edata->last_mouse);
+             else
+               pdata = EINA_INLIST_CONTAINER_GET(pseat->pointers, Evas_Pointer_Data);
+             //
              _evas_canvas_event_pointer_move_event_dispatch(edata, pdata, data);
           }
      }
@@ -4415,7 +4426,16 @@ _evas_canvas_event_pointer_in_list_mouse_move_feed(Evas_Public_Data *edata,
         if ((xor_rule && ((in && !found) || (!in && found))) ||
             (!xor_rule && (in || found)))
           {
-             if (!pdata) pdata = EINA_INLIST_CONTAINER_GET(pseat->pointers, Evas_Pointer_Data);
+             //TIZEN_ONLY(20180530): add storing last mouse device.
+             //if (!pdata) pdata = EINA_INLIST_CONTAINER_GET(pseat->pointers, Evas_Pointer_Data);
+             if (!pdata)
+               {
+                  if (edata->last_mouse)
+                    pdata = _evas_pointer_data_by_device_get(edata, edata->last_mouse);
+                  else
+                    pdata = EINA_INLIST_CONTAINER_GET(pseat->pointers, Evas_Pointer_Data);
+               }
+             //
              _evas_canvas_event_pointer_move_event_dispatch(edata, pdata, data);
           }
      }