summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJean-Philippe Andre <jp.andre@samsung.com>2016-08-19 14:22:15 +0900
committerJean-Philippe Andre <jp.andre@samsung.com>2016-08-26 10:18:01 +0900
commit834794ed84d737e394c47fc4145a0219f7124b01 (patch)
tree66694713bd57d712981d64a3f54969aa2f120867
parent608da266345c003c3f629980db8e2c2d3eb9d303 (diff)
evas events: Add new "finger,move/down/up" events for multi touch
This moves MULTI events to those new finger event types, and also sends a finger event for finger 0 (aka the pointer). NOTE: This may require a separation between a mouse input and an actual finger touch. To be defined, ie: do we let the app check the input device info to decide whether the event is actually the first finger of a multi touch device, or do we want to send only actual finger events from multi touch devices only? @feature
-rw-r--r--src/lib/efl/interfaces/efl_input_interface.eo42
-rw-r--r--src/lib/evas/canvas/evas_events.c45
-rw-r--r--src/lib/evas/canvas/evas_events_legacy.c9
3 files changed, 76 insertions, 20 deletions
diff --git a/src/lib/efl/interfaces/efl_input_interface.eo b/src/lib/efl/interfaces/efl_input_interface.eo
index 7efbea1ee2..c60d252e88 100644
--- a/src/lib/efl/interfaces/efl_input_interface.eo
+++ b/src/lib/efl/interfaces/efl_input_interface.eo
@@ -3,18 +3,42 @@ interface Efl.Input.Interface ()
3 [[An object implementing this interface can send pointer events. 3 [[An object implementing this interface can send pointer events.
4 4
5 Windows and canvas objects may send input events. 5 Windows and canvas objects may send input events.
6
7 A "pointer" refers to the main pointing device, which could be a mouse,
8 trackpad, finger, pen, etc... In other words, the finger id in any
9 pointer event will always be 0.
10
11 A "finger" refers to a single point of input, usually in an absolute
12 coordinates input device, and that can support more than one input
13 position at at time (think multi-touch screens). The first finger (id 0)
14 is sent along with a pointer event, so be careful to not handle those
15 events twice. Note that if the input device can support "hovering", it
16 is entirely possible to receive move events without down coming first.
17
18 A "key" is a key press from a keyboard or equivalent type of input device.
19 Long, repeated, key presses will always happen like this:
20 down...up,down...up,down...up (not down...up or down...down...down...up).
21
22 @since 1.19
6 ]] 23 ]]
7 event_prefix: efl; 24 event_prefix: efl;
8 events { 25 events {
9 pointer,move: Efl.Event.Pointer; 26 pointer,move: Efl.Event.Pointer; [[Main pointer move (current and previous positions are known).]]
10 pointer,down: Efl.Event.Pointer; 27 pointer,down: Efl.Event.Pointer; [[Main pointer button pressed (button id is known).]]
11 pointer,up: Efl.Event.Pointer; 28 pointer,up: Efl.Event.Pointer; [[Main pointer button released (button id is known).]]
12 pointer,cancel: Efl.Event.Pointer; 29 pointer,cancel: Efl.Event.Pointer; [[Main pointer button press was cancelled (button id is known).
13 pointer,in: Efl.Event.Pointer; 30 This can happen in rare cases when the window manager passes
14 pointer,out: Efl.Event.Pointer; 31 the focus to a more urgent window, for instance. You probably
15 pointer,wheel: Efl.Event.Pointer; 32 don't need to listen to this event, as it will be accompanied
16 key,down: Efl.Event.Key; 33 by an up event.]]
17 key,up: Efl.Event.Key; 34 pointer,in: Efl.Event.Pointer; [[Pointer entered a window or a widget.]]
35 pointer,out: Efl.Event.Pointer; [[Pointer left a window or a widget.]]
36 pointer,wheel: Efl.Event.Pointer; [[Mouse wheel event.]]
37 finger,move: Efl.Event.Pointer; [[Finger moved (current and previous positions are known).]]
38 finger,down: Efl.Event.Pointer; [[Finger pressed (finger id is known).]]
39 finger,up: Efl.Event.Pointer; [[Finger released (finger id is known).]]
40 key,down: Efl.Event.Key; [[Keyboard key press.]]
41 key,up: Efl.Event.Key; [[Keyboard key release.]]
18 hold: Efl.Event.Hold; [[All input events are on hold or resumed.]] 42 hold: Efl.Event.Hold; [[All input events are on hold or resumed.]]
19 } 43 }
20} 44}
diff --git a/src/lib/evas/canvas/evas_events.c b/src/lib/evas/canvas/evas_events.c
index d4ae90921c..83539fa286 100644
--- a/src/lib/evas/canvas/evas_events.c
+++ b/src/lib/evas/canvas/evas_events.c
@@ -395,6 +395,7 @@ _evas_event_source_mouse_down_events(Evas_Object *eo_obj, Evas *eo_e,
395 _transform_to_src_space_f(obj, src, &ev->cur); 395 _transform_to_src_space_f(obj, src, &ev->cur);
396 point = ev->cur; 396 point = ev->cur;
397 ev->source = eo_obj; 397 ev->source = eo_obj;
398 ev->finger = 0;
398 399
399 EINA_COW_WRITE_BEGIN(evas_object_proxy_cow, src->proxy, Evas_Object_Proxy_Data, proxy_write) 400 EINA_COW_WRITE_BEGIN(evas_object_proxy_cow, src->proxy, Evas_Object_Proxy_Data, proxy_write)
400 { 401 {
@@ -440,6 +441,8 @@ _evas_event_source_mouse_down_events(Evas_Object *eo_obj, Evas *eo_e,
440 _evas_event_havemap_adjust_f(eo_child, child, &ev->cur, child->mouse_grabbed); 441 _evas_event_havemap_adjust_f(eo_child, child, &ev->cur, child->mouse_grabbed);
441 evas_object_event_callback_call(eo_child, child, EVAS_CALLBACK_MOUSE_DOWN, NULL, 442 evas_object_event_callback_call(eo_child, child, EVAS_CALLBACK_MOUSE_DOWN, NULL,
442 event_id, EFL_EVENT_POINTER_DOWN, evt); 443 event_id, EFL_EVENT_POINTER_DOWN, evt);
444 evas_object_event_callback_call(eo_child, child, EVAS_CALLBACK_MULTI_DOWN, NULL,
445 event_id, EFL_EVENT_FINGER_DOWN, evt);
443 if (e->delete_me) break; 446 if (e->delete_me) break;
444 if (obj->pointer_mode == EVAS_OBJECT_POINTER_MODE_NOGRAB_NO_REPEAT_UPDOWN) 447 if (obj->pointer_mode == EVAS_OBJECT_POINTER_MODE_NOGRAB_NO_REPEAT_UPDOWN)
445 break; 448 break;
@@ -477,6 +480,7 @@ _evas_event_source_mouse_move_events(Evas_Object *eo_obj, Evas *eo_e,
477 curpt = ev->cur; 480 curpt = ev->cur;
478 prevpt = ev->prev; 481 prevpt = ev->prev;
479 ev->source = eo_obj; 482 ev->source = eo_obj;
483 ev->finger = 0;
480 484
481 if (e->pointer.mouse_grabbed) 485 if (e->pointer.mouse_grabbed)
482 { 486 {
@@ -501,6 +505,8 @@ _evas_event_source_mouse_move_events(Evas_Object *eo_obj, Evas *eo_e,
501 ev->action = EFL_POINTER_ACTION_MOVE; 505 ev->action = EFL_POINTER_ACTION_MOVE;
502 evas_object_event_callback_call(eo_child, child, EVAS_CALLBACK_MOUSE_MOVE, NULL, 506 evas_object_event_callback_call(eo_child, child, EVAS_CALLBACK_MOUSE_MOVE, NULL,
503 event_id, EFL_EVENT_POINTER_MOVE, evt); 507 event_id, EFL_EVENT_POINTER_MOVE, evt);
508 evas_object_event_callback_call(eo_child, child, EVAS_CALLBACK_MULTI_MOVE, NULL,
509 event_id, EFL_EVENT_FINGER_MOVE, evt);
504 } 510 }
505 else 511 else
506 outs = eina_list_append(outs, eo_child); 512 outs = eina_list_append(outs, eo_child);
@@ -563,6 +569,8 @@ _evas_event_source_mouse_move_events(Evas_Object *eo_obj, Evas *eo_e,
563 _evas_event_havemap_adjust_f(eo_child, child, &ev->cur, child->mouse_grabbed); 569 _evas_event_havemap_adjust_f(eo_child, child, &ev->cur, child->mouse_grabbed);
564 evas_object_event_callback_call(eo_child, child, EVAS_CALLBACK_MOUSE_MOVE, NULL, 570 evas_object_event_callback_call(eo_child, child, EVAS_CALLBACK_MOUSE_MOVE, NULL,
565 event_id, EFL_EVENT_POINTER_MOVE, evt); 571 event_id, EFL_EVENT_POINTER_MOVE, evt);
572 evas_object_event_callback_call(eo_child, child, EVAS_CALLBACK_MULTI_MOVE, NULL,
573 event_id, EFL_EVENT_FINGER_MOVE, evt);
566 } 574 }
567 else if (child->mouse_in) 575 else if (child->mouse_in)
568 { 576 {
@@ -642,6 +650,7 @@ _evas_event_source_mouse_up_events(Evas_Object *eo_obj, Evas *eo_e,
642 _transform_to_src_space_f(obj, src, &ev->cur); 650 _transform_to_src_space_f(obj, src, &ev->cur);
643 point = ev->cur; 651 point = ev->cur;
644 ev->source = eo_obj; 652 ev->source = eo_obj;
653 ev->finger = 0;
645 654
646 copy = evas_event_list_copy(src->proxy->src_event_in); 655 copy = evas_event_list_copy(src->proxy->src_event_in);
647 EINA_LIST_FOREACH(copy, l, eo_child) 656 EINA_LIST_FOREACH(copy, l, eo_child)
@@ -660,6 +669,8 @@ _evas_event_source_mouse_up_events(Evas_Object *eo_obj, Evas *eo_e,
660 _evas_event_havemap_adjust_f(eo_child, child, &ev->cur, child->mouse_grabbed); 669 _evas_event_havemap_adjust_f(eo_child, child, &ev->cur, child->mouse_grabbed);
661 evas_object_event_callback_call(eo_child, child, EVAS_CALLBACK_MOUSE_UP, NULL, 670 evas_object_event_callback_call(eo_child, child, EVAS_CALLBACK_MOUSE_UP, NULL,
662 event_id, EFL_EVENT_POINTER_UP, evt); 671 event_id, EFL_EVENT_POINTER_UP, evt);
672 evas_object_event_callback_call(eo_child, child, EVAS_CALLBACK_MULTI_UP, NULL,
673 event_id, EFL_EVENT_FINGER_UP, evt);
663 if (e->delete_me) break; 674 if (e->delete_me) break;
664 if (obj->pointer_mode == 675 if (obj->pointer_mode ==
665 EVAS_OBJECT_POINTER_MODE_NOGRAB_NO_REPEAT_UPDOWN) 676 EVAS_OBJECT_POINTER_MODE_NOGRAB_NO_REPEAT_UPDOWN)
@@ -780,7 +791,7 @@ _evas_event_source_multi_down_events(Evas_Object_Protected_Data *obj, Evas_Publi
780 ev->cur = point; 791 ev->cur = point;
781 _evas_event_havemap_adjust_f(eo_child, child, &ev->cur, child->mouse_grabbed); 792 _evas_event_havemap_adjust_f(eo_child, child, &ev->cur, child->mouse_grabbed);
782 evas_object_event_callback_call(obj->object, obj, EVAS_CALLBACK_MULTI_DOWN, NULL, 793 evas_object_event_callback_call(obj->object, obj, EVAS_CALLBACK_MULTI_DOWN, NULL,
783 event_id, EFL_EVENT_POINTER_DOWN, ev->eo); 794 event_id, EFL_EVENT_FINGER_DOWN, ev->eo);
784 if (e->delete_me) break; 795 if (e->delete_me) break;
785 } 796 }
786 eina_list_free(copy); 797 eina_list_free(copy);
@@ -826,7 +837,7 @@ _evas_event_source_multi_up_events(Evas_Object_Protected_Data *obj, Evas_Public_
826 ev->cur = point; 837 ev->cur = point;
827 _evas_event_havemap_adjust_f(eo_child, child, &ev->cur, child->mouse_grabbed); 838 _evas_event_havemap_adjust_f(eo_child, child, &ev->cur, child->mouse_grabbed);
828 evas_object_event_callback_call(obj->object, obj, EVAS_CALLBACK_MULTI_UP, NULL, 839 evas_object_event_callback_call(obj->object, obj, EVAS_CALLBACK_MULTI_UP, NULL,
829 event_id, EFL_EVENT_POINTER_UP, ev->eo); 840 event_id, EFL_EVENT_FINGER_UP, ev->eo);
830 if (e->delete_me || e->is_frozen) break; 841 if (e->delete_me || e->is_frozen) break;
831 } 842 }
832 eina_list_free(copy); 843 eina_list_free(copy);
@@ -878,7 +889,7 @@ _evas_event_source_multi_move_events(Evas_Object_Protected_Data *obj, Evas_Publi
878 ev->cur = point; 889 ev->cur = point;
879 _evas_event_havemap_adjust_f(eo_child, child, &ev->cur, child->mouse_grabbed); 890 _evas_event_havemap_adjust_f(eo_child, child, &ev->cur, child->mouse_grabbed);
880 evas_object_event_callback_call(obj->object, obj, EVAS_CALLBACK_MULTI_MOVE, NULL, 891 evas_object_event_callback_call(obj->object, obj, EVAS_CALLBACK_MULTI_MOVE, NULL,
881 event_id, EFL_EVENT_POINTER_MOVE, ev->eo); 892 event_id, EFL_EVENT_FINGER_MOVE, ev->eo);
882 if (e->delete_me || e->is_frozen) break; 893 if (e->delete_me || e->is_frozen) break;
883 } 894 }
884 } 895 }
@@ -916,7 +927,7 @@ _evas_event_source_multi_move_events(Evas_Object_Protected_Data *obj, Evas_Publi
916 { 927 {
917 _evas_event_havemap_adjust_f(eo_child, child, &ev->cur, child->mouse_grabbed); 928 _evas_event_havemap_adjust_f(eo_child, child, &ev->cur, child->mouse_grabbed);
918 evas_object_event_callback_call(obj->object, obj, EVAS_CALLBACK_MULTI_MOVE, NULL, 929 evas_object_event_callback_call(obj->object, obj, EVAS_CALLBACK_MULTI_MOVE, NULL,
919 event_id, EFL_EVENT_POINTER_MOVE, ev->eo); 930 event_id, EFL_EVENT_FINGER_MOVE, ev->eo);
920 if (e->delete_me || e->is_frozen) break; 931 if (e->delete_me || e->is_frozen) break;
921 } 932 }
922 } 933 }
@@ -1231,6 +1242,7 @@ _canvas_event_feed_mouse_down_internal(Evas_Public_Data *e, Efl_Event_Pointer_Da
1231 ev->modifiers = &(e->modifiers); 1242 ev->modifiers = &(e->modifiers);
1232 ev->locks = &(e->locks); 1243 ev->locks = &(e->locks);
1233 ev->event_flags = e->default_event_flags; 1244 ev->event_flags = e->default_event_flags;
1245 ev->finger = 0;
1234 if (ev->device) efl_ref(ev->device); 1246 if (ev->device) efl_ref(ev->device);
1235 1247
1236 _evas_walk(e); 1248 _evas_walk(e);
@@ -1275,9 +1287,10 @@ _canvas_event_feed_mouse_down_internal(Evas_Public_Data *e, Efl_Event_Pointer_Da
1275 ev->cur.x = e->pointer.x; 1287 ev->cur.x = e->pointer.x;
1276 ev->cur.y = e->pointer.y; 1288 ev->cur.y = e->pointer.y;
1277 _evas_event_havemap_adjust_f(eo_obj, obj, &ev->cur, obj->mouse_grabbed); 1289 _evas_event_havemap_adjust_f(eo_obj, obj, &ev->cur, obj->mouse_grabbed);
1278 evas_object_event_callback_call 1290 evas_object_event_callback_call(eo_obj, obj, EVAS_CALLBACK_MOUSE_DOWN, NULL,
1279 (eo_obj, obj, EVAS_CALLBACK_MOUSE_DOWN, NULL, 1291 event_id, EFL_EVENT_POINTER_DOWN, ev->eo);
1280 event_id, EFL_EVENT_POINTER_DOWN, ev->eo); 1292 evas_object_event_callback_call(eo_obj, obj, EVAS_CALLBACK_MULTI_DOWN, NULL,
1293 event_id, EFL_EVENT_FINGER_DOWN, ev->eo);
1281 if ((obj->proxy->is_proxy) && (obj->proxy->src_events)) 1294 if ((obj->proxy->is_proxy) && (obj->proxy->src_events))
1282 _evas_event_source_mouse_down_events(eo_obj, eo_e, ev->eo, event_id); 1295 _evas_event_source_mouse_down_events(eo_obj, eo_e, ev->eo, event_id);
1283 if (e->is_frozen || e->delete_me) break; 1296 if (e->is_frozen || e->delete_me) break;
@@ -1427,6 +1440,7 @@ _canvas_event_feed_mouse_up_internal(Evas_Public_Data *e, Efl_Event_Pointer_Data
1427 ev->modifiers = &(e->modifiers); 1440 ev->modifiers = &(e->modifiers);
1428 ev->locks = &(e->locks); 1441 ev->locks = &(e->locks);
1429 ev->event_flags = e->default_event_flags; 1442 ev->event_flags = e->default_event_flags;
1443 ev->finger = 0;
1430 if (ev->device) efl_ref(ev->device); 1444 if (ev->device) efl_ref(ev->device);
1431 1445
1432 _evas_walk(e); 1446 _evas_walk(e);
@@ -1453,6 +1467,8 @@ _canvas_event_feed_mouse_up_internal(Evas_Public_Data *e, Efl_Event_Pointer_Data
1453 _evas_event_havemap_adjust_f(eo_obj, obj, &ev->cur, obj->mouse_grabbed); 1467 _evas_event_havemap_adjust_f(eo_obj, obj, &ev->cur, obj->mouse_grabbed);
1454 evas_object_event_callback_call(eo_obj, obj, EVAS_CALLBACK_MOUSE_UP, NULL, 1468 evas_object_event_callback_call(eo_obj, obj, EVAS_CALLBACK_MOUSE_UP, NULL,
1455 event_id, EFL_EVENT_POINTER_UP, ev->eo); 1469 event_id, EFL_EVENT_POINTER_UP, ev->eo);
1470 evas_object_event_callback_call(eo_obj, obj, EVAS_CALLBACK_MULTI_UP, NULL,
1471 event_id, EFL_EVENT_FINGER_UP, ev->eo);
1456 if ((obj->proxy->is_proxy) && (obj->proxy->src_events)) 1472 if ((obj->proxy->is_proxy) && (obj->proxy->src_events))
1457 _evas_event_source_mouse_up_events(eo_obj, eo_e, ev->eo, event_id); 1473 _evas_event_source_mouse_up_events(eo_obj, eo_e, ev->eo, event_id);
1458 if (e->delete_me) break; 1474 if (e->delete_me) break;
@@ -1705,6 +1721,7 @@ _canvas_event_feed_mouse_move_internal(Evas_Public_Data *e, Efl_Event_Pointer_Da
1705 ev->locks = &(e->locks); 1721 ev->locks = &(e->locks);
1706 ev->event_flags = e->default_event_flags; 1722 ev->event_flags = e->default_event_flags;
1707 ev->pressed_buttons = e->pointer.button; 1723 ev->pressed_buttons = e->pointer.button;
1724 ev->finger = 0;
1708 if (ev->device) efl_ref(ev->device); 1725 if (ev->device) efl_ref(ev->device);
1709 1726
1710 _evas_walk(e); 1727 _evas_walk(e);
@@ -1741,6 +1758,8 @@ _canvas_event_feed_mouse_move_internal(Evas_Public_Data *e, Efl_Event_Pointer_Da
1741 _evas_event_havemap_adjust_f(eo_obj, obj, &ev->cur, obj->mouse_grabbed); 1758 _evas_event_havemap_adjust_f(eo_obj, obj, &ev->cur, obj->mouse_grabbed);
1742 evas_object_event_callback_call(eo_obj, obj, EVAS_CALLBACK_MOUSE_MOVE, NULL, 1759 evas_object_event_callback_call(eo_obj, obj, EVAS_CALLBACK_MOUSE_MOVE, NULL,
1743 event_id, EFL_EVENT_POINTER_MOVE, evt); 1760 event_id, EFL_EVENT_POINTER_MOVE, evt);
1761 evas_object_event_callback_call(eo_obj, obj, EVAS_CALLBACK_MULTI_MOVE, NULL,
1762 event_id, EFL_EVENT_FINGER_MOVE, evt);
1744 if ((obj->proxy->is_proxy) && (obj->proxy->src_events)) 1763 if ((obj->proxy->is_proxy) && (obj->proxy->src_events))
1745 _evas_event_source_mouse_move_events(eo_obj, eo_e, evt, event_id); 1764 _evas_event_source_mouse_move_events(eo_obj, eo_e, evt, event_id);
1746 } 1765 }
@@ -1824,6 +1843,8 @@ _canvas_event_feed_mouse_move_internal(Evas_Public_Data *e, Efl_Event_Pointer_Da
1824 ev->action = EFL_POINTER_ACTION_MOVE; 1843 ev->action = EFL_POINTER_ACTION_MOVE;
1825 evas_object_event_callback_call(eo_obj, obj, EVAS_CALLBACK_MOUSE_MOVE, NULL, 1844 evas_object_event_callback_call(eo_obj, obj, EVAS_CALLBACK_MOUSE_MOVE, NULL,
1826 event_id, EFL_EVENT_POINTER_MOVE, evt); 1845 event_id, EFL_EVENT_POINTER_MOVE, evt);
1846 evas_object_event_callback_call(eo_obj, obj, EVAS_CALLBACK_MULTI_MOVE, NULL,
1847 event_id, EFL_EVENT_FINGER_MOVE, evt);
1827 if ((obj->proxy->is_proxy) && (obj->proxy->src_events)) 1848 if ((obj->proxy->is_proxy) && (obj->proxy->src_events))
1828 _evas_event_source_mouse_move_events(eo_obj, eo_e, evt, event_id); 1849 _evas_event_source_mouse_move_events(eo_obj, eo_e, evt, event_id);
1829 } 1850 }
@@ -1954,6 +1975,8 @@ nogrep:
1954 ev->action = EFL_POINTER_ACTION_MOVE; 1975 ev->action = EFL_POINTER_ACTION_MOVE;
1955 evas_object_event_callback_call(eo_obj, obj, EVAS_CALLBACK_MOUSE_MOVE, NULL, 1976 evas_object_event_callback_call(eo_obj, obj, EVAS_CALLBACK_MOUSE_MOVE, NULL,
1956 event_id, EFL_EVENT_POINTER_MOVE, evt); 1977 event_id, EFL_EVENT_POINTER_MOVE, evt);
1978 evas_object_event_callback_call(eo_obj, obj, EVAS_CALLBACK_MULTI_MOVE, NULL,
1979 event_id, EFL_EVENT_FINGER_MOVE, evt);
1957 if ((obj->proxy->is_proxy) && (obj->proxy->src_events)) 1980 if ((obj->proxy->is_proxy) && (obj->proxy->src_events))
1958 _evas_event_source_mouse_move_events(eo_obj, eo_e, evt, event_id); 1981 _evas_event_source_mouse_move_events(eo_obj, eo_e, evt, event_id);
1959 } 1982 }
@@ -2250,7 +2273,7 @@ _canvas_event_feed_multi_down_internal(Evas_Public_Data *e, Efl_Event_Pointer_Da
2250 ev->cur = point; 2273 ev->cur = point;
2251 _evas_event_havemap_adjust_f(eo_obj, obj, &ev->cur, obj->mouse_grabbed); 2274 _evas_event_havemap_adjust_f(eo_obj, obj, &ev->cur, obj->mouse_grabbed);
2252 evas_object_event_callback_call(eo_obj, obj, EVAS_CALLBACK_MULTI_DOWN, NULL, 2275 evas_object_event_callback_call(eo_obj, obj, EVAS_CALLBACK_MULTI_DOWN, NULL,
2253 event_id, EFL_EVENT_POINTER_DOWN, ev->eo); 2276 event_id, EFL_EVENT_FINGER_DOWN, ev->eo);
2254 if ((obj->proxy->is_proxy) || (obj->proxy->src_events)) 2277 if ((obj->proxy->is_proxy) || (obj->proxy->src_events))
2255 _evas_event_source_multi_down_events(obj, e, ev->eo, event_id); 2278 _evas_event_source_multi_down_events(obj, e, ev->eo, event_id);
2256 if (e->delete_me || e->is_frozen) break; 2279 if (e->delete_me || e->is_frozen) break;
@@ -2310,7 +2333,7 @@ _canvas_event_feed_multi_up_internal(Evas_Public_Data *e, Efl_Event_Pointer_Data
2310 e->pointer.mouse_grabbed--; 2333 e->pointer.mouse_grabbed--;
2311 } 2334 }
2312 evas_object_event_callback_call(eo_obj, obj, EVAS_CALLBACK_MULTI_UP, NULL, 2335 evas_object_event_callback_call(eo_obj, obj, EVAS_CALLBACK_MULTI_UP, NULL,
2313 event_id, EFL_EVENT_POINTER_UP, ev->eo); 2336 event_id, EFL_EVENT_FINGER_UP, ev->eo);
2314 if ((obj->proxy->is_proxy) || (obj->proxy->src_events)) 2337 if ((obj->proxy->is_proxy) || (obj->proxy->src_events))
2315 _evas_event_source_multi_up_events(obj, e, ev->eo, event_id); 2338 _evas_event_source_multi_up_events(obj, e, ev->eo, event_id);
2316 if (e->delete_me || e->is_frozen) break; 2339 if (e->delete_me || e->is_frozen) break;
@@ -2465,7 +2488,7 @@ _canvas_event_feed_multi_move_internal(Evas_Public_Data *e, Efl_Event_Pointer_Da
2465 ev->cur = point; 2488 ev->cur = point;
2466 _evas_event_havemap_adjust_f(eo_obj, obj, &ev->cur, obj->mouse_grabbed); 2489 _evas_event_havemap_adjust_f(eo_obj, obj, &ev->cur, obj->mouse_grabbed);
2467 evas_object_event_callback_call(eo_obj, obj, EVAS_CALLBACK_MULTI_MOVE, NULL, 2490 evas_object_event_callback_call(eo_obj, obj, EVAS_CALLBACK_MULTI_MOVE, NULL,
2468 event_id, EFL_EVENT_POINTER_MOVE, ev->eo); 2491 event_id, EFL_EVENT_FINGER_MOVE, ev->eo);
2469 if ((obj->proxy->is_proxy) || (obj->proxy->src_events)) 2492 if ((obj->proxy->is_proxy) || (obj->proxy->src_events))
2470 _evas_event_source_multi_move_events(obj, e, ev->eo, event_id); 2493 _evas_event_source_multi_move_events(obj, e, ev->eo, event_id);
2471 2494
@@ -2505,7 +2528,7 @@ _canvas_event_feed_multi_move_internal(Evas_Public_Data *e, Efl_Event_Pointer_Da
2505 ev->cur = point; 2528 ev->cur = point;
2506 _evas_event_havemap_adjust_f(eo_obj, obj, &ev->cur, obj->mouse_grabbed); 2529 _evas_event_havemap_adjust_f(eo_obj, obj, &ev->cur, obj->mouse_grabbed);
2507 evas_object_event_callback_call(eo_obj, obj, EVAS_CALLBACK_MULTI_MOVE, NULL, 2530 evas_object_event_callback_call(eo_obj, obj, EVAS_CALLBACK_MULTI_MOVE, NULL,
2508 event_id, EFL_EVENT_POINTER_MOVE, ev->eo); 2531 event_id, EFL_EVENT_FINGER_MOVE, ev->eo);
2509 if ((obj->proxy->is_proxy) || (obj->proxy->src_events)) 2532 if ((obj->proxy->is_proxy) || (obj->proxy->src_events))
2510 _evas_event_source_multi_move_events(obj, e, ev->eo, event_id); 2533 _evas_event_source_multi_move_events(obj, e, ev->eo, event_id);
2511 } 2534 }
diff --git a/src/lib/evas/canvas/evas_events_legacy.c b/src/lib/evas/canvas/evas_events_legacy.c
index dfe3d824d3..a02553027f 100644
--- a/src/lib/evas/canvas/evas_events_legacy.c
+++ b/src/lib/evas/canvas/evas_events_legacy.c
@@ -84,6 +84,9 @@ efl_event_pointer_legacy_info_fill(Efl_Event_Key *evt, Evas_Callback_Type type,
84 case EFL_POINTER_ACTION_DOWN: 84 case EFL_POINTER_ACTION_DOWN:
85 if (ev->finger == 0) 85 if (ev->finger == 0)
86 { 86 {
87 // filter out MULTI with finger 0, valid for eo, invalid for legacy
88 if (type == EVAS_CALLBACK_MULTI_DOWN)
89 return NULL;
87 TYPE_CHK(MOUSE_DOWN); 90 TYPE_CHK(MOUSE_DOWN);
88 Evas_Event_Mouse_Down *e = _event_alloc(ev->legacy); 91 Evas_Event_Mouse_Down *e = _event_alloc(ev->legacy);
89 e->button = ev->button; 92 e->button = ev->button;
@@ -132,6 +135,9 @@ efl_event_pointer_legacy_info_fill(Efl_Event_Key *evt, Evas_Callback_Type type,
132 case EFL_POINTER_ACTION_UP: 135 case EFL_POINTER_ACTION_UP:
133 if (ev->finger == 0) 136 if (ev->finger == 0)
134 { 137 {
138 // filter out MULTI with finger 0, valid for eo, invalid for legacy
139 if (type == EVAS_CALLBACK_MULTI_UP)
140 return NULL;
135 TYPE_CHK(MOUSE_UP); 141 TYPE_CHK(MOUSE_UP);
136 Evas_Event_Mouse_Up *e = _event_alloc(ev->legacy); 142 Evas_Event_Mouse_Up *e = _event_alloc(ev->legacy);
137 e->button = ev->button; 143 e->button = ev->button;
@@ -180,6 +186,9 @@ efl_event_pointer_legacy_info_fill(Efl_Event_Key *evt, Evas_Callback_Type type,
180 case EFL_POINTER_ACTION_MOVE: 186 case EFL_POINTER_ACTION_MOVE:
181 if (ev->finger == 0) 187 if (ev->finger == 0)
182 { 188 {
189 // filter out MULTI with finger 0, valid for eo, invalid for legacy
190 if (type == EVAS_CALLBACK_MULTI_MOVE)
191 return NULL;
183 TYPE_CHK(MOUSE_MOVE); 192 TYPE_CHK(MOUSE_MOVE);
184 Evas_Event_Mouse_Move *e = _event_alloc(ev->legacy); 193 Evas_Event_Mouse_Move *e = _event_alloc(ev->legacy);
185 e->buttons = ev->pressed_buttons; 194 e->buttons = ev->pressed_buttons;