summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJean-Philippe Andre <jp.andre@samsung.com>2016-05-12 16:48:54 +0900
committerJean-Philippe Andre <jp.andre@samsung.com>2016-05-31 19:03:04 +0900
commit37d894abb191cfaff3f7b702792e79a617b755a1 (patch)
tree6d58dd3fcd36d1027c7cb8a478a05da99a71cc0b
parent8e31929aab1d7c299ff9954d1617ab3887ef807c (diff)
evas: send eo pointer events on mouse move
This is still VERY experimental and not fully done yet. All other pointer events need to be sent as well. The legacy event system is used as a transportation mechanism, as it is too hard to change the logic. This only adds an extra eo event in case of move. Obviously for performance we might want to listen to callback_add,del but that's an optimization for later. The whole point of sending those pointer events is to carry more information than can be sent over legacy evas events, and unify the events in a common format.
-rw-r--r--src/lib/ecore_input_evas/ecore_input_evas.c3
-rw-r--r--src/lib/efl/interfaces/efl_event.eo4
-rw-r--r--src/lib/efl/interfaces/efl_gfx.eo4
-rw-r--r--src/lib/efl/interfaces/efl_pointer_event.c3
-rw-r--r--src/lib/efl/interfaces/efl_pointer_event.eo2
-rw-r--r--src/lib/evas/Evas_Common.h1
-rw-r--r--src/lib/evas/canvas/evas_callbacks.c19
-rw-r--r--src/lib/evas/canvas/evas_canvas.eo2
-rw-r--r--src/lib/evas/canvas/evas_events.c128
9 files changed, 138 insertions, 28 deletions
diff --git a/src/lib/ecore_input_evas/ecore_input_evas.c b/src/lib/ecore_input_evas/ecore_input_evas.c
index df7a851d4d..b0d86b6a12 100644
--- a/src/lib/ecore_input_evas/ecore_input_evas.c
+++ b/src/lib/ecore_input_evas/ecore_input_evas.c
@@ -599,6 +599,9 @@ ecore_event_evas_mouse_move(void *data EINA_UNUSED, int type EINA_UNUSED, void *
599 e = event; 599 e = event;
600 lookup = _ecore_event_window_match(e->event_window); 600 lookup = _ecore_event_window_match(e->event_window);
601 if (!lookup) return ECORE_CALLBACK_PASS_ON; 601 if (!lookup) return ECORE_CALLBACK_PASS_ON;
602 if (lookup->direct &&
603 lookup->direct(lookup->window, ECORE_EVENT_MOUSE_MOVE, e))
604 return ECORE_CALLBACK_PASS_ON;
602 if (e->multi.device == 0) 605 if (e->multi.device == 0)
603 { 606 {
604 _ecore_event_evas_push_mouse_move(e); 607 _ecore_event_evas_push_mouse_move(e);
diff --git a/src/lib/efl/interfaces/efl_event.eo b/src/lib/efl/interfaces/efl_event.eo
index 9cc2bcb122..d61491f749 100644
--- a/src/lib/efl/interfaces/efl_event.eo
+++ b/src/lib/efl/interfaces/efl_event.eo
@@ -1,4 +1,4 @@
1type @extern Eo_Event_Description: __undefined_type; 1import eo_base;
2 2
3interface Efl.Event 3interface Efl.Event
4{ 4{
@@ -31,7 +31,7 @@ interface Efl.Event
31 set {} 31 set {}
32 get {} 32 get {}
33 values { 33 values {
34 type: const(Eo_Event_Description)*; 34 type: const(Eo.Event.Description)*;
35 } 35 }
36 } 36 }
37 reset { 37 reset {
diff --git a/src/lib/efl/interfaces/efl_gfx.eo b/src/lib/efl/interfaces/efl_gfx.eo
index bfa1491fa9..eb422f1b21 100644
--- a/src/lib/efl/interfaces/efl_gfx.eo
+++ b/src/lib/efl/interfaces/efl_gfx.eo
@@ -123,4 +123,8 @@ interface Efl.Gfx {
123 } 123 }
124 } 124 }
125 } 125 }
126 events {
127 /* FIXME: eolian thinks there's a cyclic dependency here. wtf */
128 pointer /*: Efl.Pointer.Event*/; [[New generic pointer (mouse, finger, pen...) event.]]
129 }
126} 130}
diff --git a/src/lib/efl/interfaces/efl_pointer_event.c b/src/lib/efl/interfaces/efl_pointer_event.c
index 536249e797..dbd96eaefd 100644
--- a/src/lib/efl/interfaces/efl_pointer_event.c
+++ b/src/lib/efl/interfaces/efl_pointer_event.c
@@ -97,7 +97,8 @@ _efl_pointer_event_efl_event_dup(Eo *obj, Efl_Pointer_Event_Data *pd)
97 Efl_Pointer_Event_Data *ev; 97 Efl_Pointer_Event_Data *ev;
98 Efl_Pointer_Event *evt; 98 Efl_Pointer_Event *evt;
99 99
100 evt = _efl_pointer_event_instance_get(EFL_POINTER_EVENT_CLASS, NULL, obj, &ev); 100 evt = _efl_pointer_event_instance_get((Eo_Class *) EFL_POINTER_EVENT_CLASS,
101 NULL, obj, (void **) &ev);
101 if (!evt) return NULL; 102 if (!evt) return NULL;
102 103
103 memcpy(ev, pd, sizeof(*ev)); 104 memcpy(ev, pd, sizeof(*ev));
diff --git a/src/lib/efl/interfaces/efl_pointer_event.eo b/src/lib/efl/interfaces/efl_pointer_event.eo
index 1fa303bbd5..6e8251e103 100644
--- a/src/lib/efl/interfaces/efl_pointer_event.eo
+++ b/src/lib/efl/interfaces/efl_pointer_event.eo
@@ -85,7 +85,7 @@ class Efl.Pointer.Event (Eo.Base, Efl.Event)
85 propagation or repetition of the event. 85 propagation or repetition of the event.
86 ]] 86 ]]
87 values { 87 values {
88 src: Efl.Gfx; 88 src: Eo.Base; [[Source object: $Efl.Gfx]]
89 } 89 }
90 } 90 }
91 /* FIXME: why not double_click() and triple_click() */ 91 /* FIXME: why not double_click() and triple_click() */
diff --git a/src/lib/evas/Evas_Common.h b/src/lib/evas/Evas_Common.h
index 496dad7132..4d45d564f7 100644
--- a/src/lib/evas/Evas_Common.h
+++ b/src/lib/evas/Evas_Common.h
@@ -441,6 +441,7 @@ struct _Evas_Event_Mouse_Move /** Mouse move event */
441 Evas_Event_Flags event_flags; 441 Evas_Event_Flags event_flags;
442 Evas_Device *dev; 442 Evas_Device *dev;
443 Evas_Object *event_src; /**< The Evas Object which actually triggered the event, used in cases of proxy event propagation */ 443 Evas_Object *event_src; /**< The Evas Object which actually triggered the event, used in cases of proxy event propagation */
444 void *reserved; /* internal use only */
444}; 445};
445 446
446struct _Evas_Event_Mouse_Wheel /** Wheel event */ 447struct _Evas_Event_Mouse_Wheel /** Wheel event */
diff --git a/src/lib/evas/canvas/evas_callbacks.c b/src/lib/evas/canvas/evas_callbacks.c
index 1081ccec66..a922bf08ce 100644
--- a/src/lib/evas/canvas/evas_callbacks.c
+++ b/src/lib/evas/canvas/evas_callbacks.c
@@ -58,10 +58,29 @@ typedef struct
58 Evas_Callback_Type type; 58 Evas_Callback_Type type;
59} _eo_evas_object_cb_info; 59} _eo_evas_object_cb_info;
60 60
61static inline void *
62_pointer_event_get(const _eo_evas_object_cb_info *info, const Eo_Event *event)
63{
64 if (!info->data) return NULL;
65 switch (info->type)
66 {
67 case EVAS_CALLBACK_MOUSE_MOVE:
68 return ((Evas_Event_Mouse_Move *) event->info)->reserved;
69 default:
70 return NULL;
71 }
72}
73
61static Eina_Bool 74static Eina_Bool
62_eo_evas_object_cb(void *data, const Eo_Event *event) 75_eo_evas_object_cb(void *data, const Eo_Event *event)
63{ 76{
64 _eo_evas_object_cb_info *info = data; 77 _eo_evas_object_cb_info *info = data;
78 void *pe = _pointer_event_get(info, event);
79 if (pe)
80 {
81 DBG("triggering eo pointer event!");
82 eo_event_callback_call(event->object, EFL_GFX_EVENT_POINTER, pe);
83 }
65 if (info->func) info->func(info->data, evas_object_evas_get(event->object), event->object, event->info); 84 if (info->func) info->func(info->data, evas_object_evas_get(event->object), event->object, event->info);
66 return EINA_TRUE; 85 return EINA_TRUE;
67} 86}
diff --git a/src/lib/evas/canvas/evas_canvas.eo b/src/lib/evas/canvas/evas_canvas.eo
index 16673ecc2c..e0a344836f 100644
--- a/src/lib/evas/canvas/evas_canvas.eo
+++ b/src/lib/evas/canvas/evas_canvas.eo
@@ -1327,6 +1327,6 @@ class Evas.Canvas (Eo.Base, Evas.Common_Interface, Efl.Animator)
1327 device,changed; 1327 device,changed;
1328 axis,update; 1328 axis,update;
1329 viewport,resize; 1329 viewport,resize;
1330 pointer; 1330 pointer: Efl.Pointer.Event; [[Generic pointer event (mouse, finger...)]]
1331 } 1331 }
1332} 1332}
diff --git a/src/lib/evas/canvas/evas_events.c b/src/lib/evas/canvas/evas_events.c
index 4d95a8b16b..e685248bfc 100644
--- a/src/lib/evas/canvas/evas_events.c
+++ b/src/lib/evas/canvas/evas_events.c
@@ -35,6 +35,86 @@ _evas_event_havemap_adjust(Evas_Object *eo_obj EINA_UNUSED, Evas_Object_Protecte
35 } 35 }
36} 36}
37 37
38static inline Efl_Pointer_Event *
39_pointer_event_create(Evas_Callback_Type type, void *ev,
40 Efl_Pointer_Event_Data *parentev,
41 Efl_Pointer_Event_Data **evdata)
42{
43 Efl_Pointer_Event *evt = NULL;
44 Efl_Pointer_Event *pev = parentev ? parentev->eo : NULL;
45
46 if (!ev) return NULL;
47
48 /* This function converts an existing evas info struct to the efl pointer
49 * event. All pointers must be valid.
50 *
51 * FIXME: evas event logic should not use legacy structs anymore... this
52 * should be temporary code. Should be.
53 */
54
55 switch (type)
56 {
57 case EVAS_CALLBACK_MOUSE_MOVE:
58 evt = efl_pointer_event_instance_get(EFL_POINTER_EVENT_CLASS, pev, (void **) evdata);
59 efl_pointer_event_legacy_info_set(evt, ev, type);
60 ((Evas_Event_Mouse_Move *) ev)->reserved = evt;
61 break;
62 default:
63 DBG("Support for event type %d not implemented yet.", type);
64 break;
65 }
66
67 if (!evt && evdata) *evdata = NULL;
68 return evt;
69}
70
71static inline void
72_pointer_event_adjust(Evas_Callback_Type type, void *ev,
73 Efl_Pointer_Event_Data *evdata)
74{
75 if (!evdata) return;
76
77 /* FIXME: remove OR 1 */
78#if defined(DEBUG) || 1
79# define CHKACT(a) do { if (evdata->action != EFL_POINTER_ACTION_ ## a) abort(); } while (0)
80#else
81# define CHKACT(a) do {} while(0)
82#endif
83
84 switch (type)
85 {
86 case EVAS_CALLBACK_MOUSE_MOVE:
87 CHKACT(MOVE);
88 evdata->cur.x = ((Evas_Event_Mouse_Move *) ev)->cur.canvas.x;
89 evdata->cur.y = ((Evas_Event_Mouse_Move *) ev)->cur.canvas.y;
90 evdata->cur.xsub = ((Evas_Event_Mouse_Move *) ev)->cur.canvas.x;
91 evdata->cur.ysub = ((Evas_Event_Mouse_Move *) ev)->cur.canvas.y;
92 break;
93 case EVAS_CALLBACK_MOUSE_OUT:
94 CHKACT(OUT);
95 evdata->cur.x = ((Evas_Event_Mouse_Out *) ev)->canvas.x;
96 evdata->cur.y = ((Evas_Event_Mouse_Out *) ev)->canvas.y;
97 evdata->cur.xsub = ((Evas_Event_Mouse_Out *) ev)->canvas.x;
98 evdata->cur.ysub = ((Evas_Event_Mouse_Out *) ev)->canvas.y;
99 break;
100 case EVAS_CALLBACK_MOUSE_IN:
101 CHKACT(IN);
102 evdata->cur.x = ((Evas_Event_Mouse_In *) ev)->canvas.x;
103 evdata->cur.y = ((Evas_Event_Mouse_In *) ev)->canvas.y;
104 evdata->cur.xsub = ((Evas_Event_Mouse_In *) ev)->canvas.x;
105 evdata->cur.ysub = ((Evas_Event_Mouse_In *) ev)->canvas.y;
106 break;
107 default: break;
108 }
109}
110
111#define EV_CALL(_eo_obj, _obj, _typ, _ev, _id, _pe) do { \
112 if (!_pe) _pe = _pointer_event_create(_typ, _ev, parent_pe, & _pe ## data); \
113 else _pointer_event_adjust(_typ, _ev, _pe ## data); \
114 evas_object_event_callback_call(_eo_obj, _obj, _typ, _ev, _id); \
115 } while (0)
116#define EV_DEL(a) do { eo_unref(a); a = NULL; } while (0)
117
38static Eina_List * 118static Eina_List *
39_evas_event_object_list_raw_in_get(Evas *eo_e, Eina_List *in, 119_evas_event_object_list_raw_in_get(Evas *eo_e, Eina_List *in,
40 const Eina_Inlist *list, Evas_Object *stop, 120 const Eina_Inlist *list, Evas_Object *stop,
@@ -1422,9 +1502,13 @@ evas_event_feed_mouse_wheel(Eo *eo_e, int direction, int z, unsigned int timesta
1422} 1502}
1423 1503
1424static void 1504static void
1425_canvas_event_feed_mouse_move_internal(Eo *eo_e, Evas_Public_Data *e, int x, int y, unsigned int timestamp, const void *data) 1505_canvas_event_feed_mouse_move_internal(Eo *eo_e, Evas_Public_Data *e, int x, int y,
1506 unsigned int timestamp, const void *data,
1507 Efl_Pointer_Event_Data *parent_pe)
1426{ 1508{
1427 Evas_Object *nogrep_obj = NULL; 1509 Evas_Object *nogrep_obj = NULL;
1510 Efl_Pointer_Event_Data *pemovedata = NULL, *peoutdata = NULL, *peindata = NULL;
1511 Efl_Pointer_Event *pemove = NULL, *peout = NULL, *pein = NULL;
1428 int px, py; 1512 int px, py;
1429 1513
1430 px = e->pointer.x; 1514 px = e->pointer.x;
@@ -1471,6 +1555,7 @@ _canvas_event_feed_mouse_move_internal(Eo *eo_e, Evas_Public_Data *e, int x, int
1471 ev.event_flags = e->default_event_flags; 1555 ev.event_flags = e->default_event_flags;
1472 ev.dev = _evas_device_top_get(eo_e); 1556 ev.dev = _evas_device_top_get(eo_e);
1473 if (ev.dev) eo_ref(ev.dev); 1557 if (ev.dev) eo_ref(ev.dev);
1558
1474 copy = evas_event_list_copy(e->pointer.object.in); 1559 copy = evas_event_list_copy(e->pointer.object.in);
1475 EINA_LIST_FOREACH(copy, l, eo_obj) 1560 EINA_LIST_FOREACH(copy, l, eo_obj)
1476 { 1561 {
@@ -1492,8 +1577,7 @@ _canvas_event_feed_mouse_move_internal(Eo *eo_e, Evas_Public_Data *e, int x, int
1492 1577
1493 if ((px != x) || (py != y)) 1578 if ((px != x) || (py != y))
1494 { 1579 {
1495 evas_object_event_callback_call(eo_obj, obj, 1580 EV_CALL(eo_obj, obj, EVAS_CALLBACK_MOUSE_MOVE, &ev, event_id, pemove);
1496 EVAS_CALLBACK_MOUSE_MOVE, &ev, event_id);
1497 if ((obj->proxy->is_proxy) && 1581 if ((obj->proxy->is_proxy) &&
1498 (obj->proxy->src_events)) 1582 (obj->proxy->src_events))
1499 _evas_event_source_mouse_move_events(eo_obj, eo_e, 1583 _evas_event_source_mouse_move_events(eo_obj, eo_e,
@@ -1514,6 +1598,7 @@ _canvas_event_feed_mouse_move_internal(Eo *eo_e, Evas_Public_Data *e, int x, int
1514 } 1598 }
1515 _evas_post_event_callback_call(eo_e, e); 1599 _evas_post_event_callback_call(eo_e, e);
1516 if (ev.dev) eo_unref(ev.dev); 1600 if (ev.dev) eo_unref(ev.dev);
1601 EV_DEL(pemove);
1517 } 1602 }
1518 { 1603 {
1519 Evas_Event_Mouse_Out ev; 1604 Evas_Event_Mouse_Out ev;
@@ -1554,9 +1639,7 @@ _canvas_event_feed_mouse_move_internal(Eo *eo_e, Evas_Public_Data *e, int x, int
1554 &ev.canvas.y, 1639 &ev.canvas.y,
1555 obj->mouse_grabbed); 1640 obj->mouse_grabbed);
1556 e->pointer.object.in = eina_list_remove(e->pointer.object.in, eo_obj); 1641 e->pointer.object.in = eina_list_remove(e->pointer.object.in, eo_obj);
1557 evas_object_event_callback_call(eo_obj, obj, 1642 EV_CALL(eo_obj, obj, EVAS_CALLBACK_MOUSE_OUT, &ev, event_id, pein);
1558 EVAS_CALLBACK_MOUSE_OUT,
1559 &ev, event_id);
1560 if ((obj->proxy->is_proxy) && 1643 if ((obj->proxy->is_proxy) &&
1561 (obj->proxy->src_events)) 1644 (obj->proxy->src_events))
1562 _evas_event_source_mouse_out_events(eo_obj, eo_e, &ev, 1645 _evas_event_source_mouse_out_events(eo_obj, eo_e, &ev,
@@ -1565,6 +1648,7 @@ _canvas_event_feed_mouse_move_internal(Eo *eo_e, Evas_Public_Data *e, int x, int
1565 } 1648 }
1566 _evas_post_event_callback_call(eo_e, e); 1649 _evas_post_event_callback_call(eo_e, e);
1567 if (ev.dev) eo_unref(ev.dev); 1650 if (ev.dev) eo_unref(ev.dev);
1651 EV_DEL(peout);
1568 } 1652 }
1569 } 1653 }
1570 else 1654 else
@@ -1652,7 +1736,7 @@ _canvas_event_feed_mouse_move_internal(Eo *eo_e, Evas_Public_Data *e, int x, int
1652 ev.cur.canvas.x = e->pointer.x; 1736 ev.cur.canvas.x = e->pointer.x;
1653 ev.cur.canvas.y = e->pointer.y; 1737 ev.cur.canvas.y = e->pointer.y;
1654 _evas_event_havemap_adjust(eo_obj, obj, &ev.cur.canvas.x, &ev.cur.canvas.y, obj->mouse_grabbed); 1738 _evas_event_havemap_adjust(eo_obj, obj, &ev.cur.canvas.x, &ev.cur.canvas.y, obj->mouse_grabbed);
1655 evas_object_event_callback_call(eo_obj, obj, EVAS_CALLBACK_MOUSE_MOVE, &ev, event_id); 1739 EV_CALL(eo_obj, obj, EVAS_CALLBACK_MOUSE_MOVE, &ev, event_id, pemove);
1656 if ((obj->proxy->is_proxy) && (obj->proxy->src_events)) 1740 if ((obj->proxy->is_proxy) && (obj->proxy->src_events))
1657 _evas_event_source_mouse_move_events(eo_obj, eo_e, &ev, 1741 _evas_event_source_mouse_move_events(eo_obj, eo_e, &ev,
1658 event_id); 1742 event_id);
@@ -1670,9 +1754,7 @@ _canvas_event_feed_mouse_move_internal(Eo *eo_e, Evas_Public_Data *e, int x, int
1670 _evas_event_havemap_adjust(eo_obj, obj, &ev2.canvas.x, 1754 _evas_event_havemap_adjust(eo_obj, obj, &ev2.canvas.x,
1671 &ev2.canvas.y, 1755 &ev2.canvas.y,
1672 obj->mouse_grabbed); 1756 obj->mouse_grabbed);
1673 evas_object_event_callback_call(eo_obj, obj, 1757 EV_CALL(eo_obj, obj, EVAS_CALLBACK_MOUSE_OUT, &ev2, event_id, peout);
1674 EVAS_CALLBACK_MOUSE_OUT,
1675 &ev2, event_id);
1676 if ((obj->proxy->is_proxy) && (obj->proxy->src_events)) 1758 if ((obj->proxy->is_proxy) && (obj->proxy->src_events))
1677 _evas_event_source_mouse_out_events(eo_obj, eo_e, &ev2, 1759 _evas_event_source_mouse_out_events(eo_obj, eo_e, &ev2,
1678 event_id); 1760 event_id);
@@ -1703,9 +1785,7 @@ _canvas_event_feed_mouse_move_internal(Eo *eo_e, Evas_Public_Data *e, int x, int
1703 _evas_event_havemap_adjust(eo_obj, obj, &ev3.canvas.x, 1785 _evas_event_havemap_adjust(eo_obj, obj, &ev3.canvas.x,
1704 &ev3.canvas.y, 1786 &ev3.canvas.y,
1705 obj->mouse_grabbed); 1787 obj->mouse_grabbed);
1706 evas_object_event_callback_call(eo_obj, obj, 1788 EV_CALL(eo_obj, obj, EVAS_CALLBACK_MOUSE_IN, &ev3, event_id2, pein);
1707 EVAS_CALLBACK_MOUSE_IN,
1708 &ev3, event_id2);
1709 if ((obj->proxy->is_proxy) && 1789 if ((obj->proxy->is_proxy) &&
1710 (obj->proxy->src_events)) 1790 (obj->proxy->src_events))
1711 _evas_event_source_mouse_in_events(eo_obj, eo_e, &ev3, 1791 _evas_event_source_mouse_in_events(eo_obj, eo_e, &ev3,
@@ -1728,6 +1808,9 @@ _canvas_event_feed_mouse_move_internal(Eo *eo_e, Evas_Public_Data *e, int x, int
1728 } 1808 }
1729 _evas_post_event_callback_call(eo_e, e); 1809 _evas_post_event_callback_call(eo_e, e);
1730 if (ev.dev) eo_unref(ev.dev); 1810 if (ev.dev) eo_unref(ev.dev);
1811 EV_DEL(pemove);
1812 EV_DEL(peout);
1813 EV_DEL(pein);
1731 } 1814 }
1732 _evas_unwalk(e); 1815 _evas_unwalk(e);
1733 return; 1816 return;
@@ -1844,7 +1927,7 @@ nogrep:
1844 ev.cur.canvas.x = e->pointer.x; 1927 ev.cur.canvas.x = e->pointer.x;
1845 ev.cur.canvas.y = e->pointer.y; 1928 ev.cur.canvas.y = e->pointer.y;
1846 _evas_event_havemap_adjust(eo_obj, obj, &ev.cur.canvas.x, &ev.cur.canvas.y, obj->mouse_grabbed); 1929 _evas_event_havemap_adjust(eo_obj, obj, &ev.cur.canvas.x, &ev.cur.canvas.y, obj->mouse_grabbed);
1847 evas_object_event_callback_call(eo_obj, obj, EVAS_CALLBACK_MOUSE_MOVE, &ev, event_id); 1930 EV_CALL(eo_obj, obj, EVAS_CALLBACK_MOUSE_MOVE, &ev, event_id, pemove);
1848 if ((obj->proxy->is_proxy) && (obj->proxy->src_events)) 1931 if ((obj->proxy->is_proxy) && (obj->proxy->src_events))
1849 _evas_event_source_mouse_move_events(eo_obj, eo_e, &ev, 1932 _evas_event_source_mouse_move_events(eo_obj, eo_e, &ev,
1850 event_id); 1933 event_id);
@@ -1860,9 +1943,7 @@ nogrep:
1860 ev2.canvas.y = e->pointer.y; 1943 ev2.canvas.y = e->pointer.y;
1861 _evas_event_havemap_adjust(eo_obj, obj, &ev2.canvas.x, 1944 _evas_event_havemap_adjust(eo_obj, obj, &ev2.canvas.x,
1862 &ev2.canvas.y, obj->mouse_grabbed); 1945 &ev2.canvas.y, obj->mouse_grabbed);
1863 evas_object_event_callback_call(eo_obj, obj, 1946 EV_CALL(eo_obj, obj, EVAS_CALLBACK_MOUSE_OUT, &ev2, event_id, peout);
1864 EVAS_CALLBACK_MOUSE_OUT, &ev2,
1865 event_id);
1866 if ((obj->proxy->is_proxy) && (obj->proxy->src_events)) 1947 if ((obj->proxy->is_proxy) && (obj->proxy->src_events))
1867 _evas_event_source_mouse_out_events(eo_obj, eo_e, &ev2, 1948 _evas_event_source_mouse_out_events(eo_obj, eo_e, &ev2,
1868 event_id); 1949 event_id);
@@ -1890,9 +1971,7 @@ nogrep:
1890 ev3.canvas.y = e->pointer.y; 1971 ev3.canvas.y = e->pointer.y;
1891 _evas_event_havemap_adjust(eo_obj, obj, &ev3.canvas.x, 1972 _evas_event_havemap_adjust(eo_obj, obj, &ev3.canvas.x,
1892 &ev3.canvas.y, obj->mouse_grabbed); 1973 &ev3.canvas.y, obj->mouse_grabbed);
1893 evas_object_event_callback_call(eo_obj, obj, 1974 EV_CALL(eo_obj, obj, EVAS_CALLBACK_MOUSE_IN, &ev3, event_id2, pein);
1894 EVAS_CALLBACK_MOUSE_IN, &ev3,
1895 event_id2);
1896 if ((obj->proxy->is_proxy) && (obj->proxy->src_events)) 1975 if ((obj->proxy->is_proxy) && (obj->proxy->src_events))
1897 _evas_event_source_mouse_in_events(eo_obj, eo_e, &ev3, 1976 _evas_event_source_mouse_in_events(eo_obj, eo_e, &ev3,
1898 event_id2); 1977 event_id2);
@@ -1906,6 +1985,9 @@ nogrep:
1906 1985
1907 _evas_post_event_callback_call(eo_e, e); 1986 _evas_post_event_callback_call(eo_e, e);
1908 if (ev.dev) eo_unref(ev.dev); 1987 if (ev.dev) eo_unref(ev.dev);
1988 EV_DEL(pemove);
1989 EV_DEL(peout);
1990 EV_DEL(pein);
1909 } 1991 }
1910 _evas_unwalk(e); 1992 _evas_unwalk(e);
1911} 1993}
@@ -1914,14 +1996,14 @@ EAPI void
1914evas_event_input_mouse_move(Eo *eo_e, int x, int y, unsigned int timestamp, const void *data) 1996evas_event_input_mouse_move(Eo *eo_e, int x, int y, unsigned int timestamp, const void *data)
1915{ 1997{
1916 Evas_Public_Data *e = eo_data_scope_get(eo_e, EVAS_CANVAS_CLASS); 1998 Evas_Public_Data *e = eo_data_scope_get(eo_e, EVAS_CANVAS_CLASS);
1917 _canvas_event_feed_mouse_move_internal(eo_e, e, x - e->framespace.x, y - e->framespace.y, timestamp, data); 1999 _canvas_event_feed_mouse_move_internal(eo_e, e, x - e->framespace.x, y - e->framespace.y, timestamp, data, NULL);
1918} 2000}
1919 2001
1920EAPI void 2002EAPI void
1921evas_event_feed_mouse_move(Eo *eo_e, int x, int y, unsigned int timestamp, const void *data) 2003evas_event_feed_mouse_move(Eo *eo_e, int x, int y, unsigned int timestamp, const void *data)
1922{ 2004{
1923 Evas_Public_Data *e = eo_data_scope_get(eo_e, EVAS_CANVAS_CLASS); 2005 Evas_Public_Data *e = eo_data_scope_get(eo_e, EVAS_CANVAS_CLASS);
1924 _canvas_event_feed_mouse_move_internal(eo_e, e, x, y, timestamp, data); 2006 _canvas_event_feed_mouse_move_internal(eo_e, e, x, y, timestamp, data, NULL);
1925} 2007}
1926 2008
1927EAPI void 2009EAPI void
@@ -3059,7 +3141,7 @@ _evas_canvas_event_pointer_cb(void *data, const Eo_Event *event)
3059 if (ev->finger == 0) 3141 if (ev->finger == 0)
3060 { 3142 {
3061 _canvas_event_feed_mouse_move_internal(eo_e, e, ev->cur.x, ev->cur.y, 3143 _canvas_event_feed_mouse_move_internal(eo_e, e, ev->cur.x, ev->cur.y,
3062 ev->timestamp, ev->data); 3144 ev->timestamp, ev->data, ev);
3063 } 3145 }
3064 else 3146 else
3065 { 3147 {