Hi,
Attached patch introduces fields to events Evas_Event_Mouse_* structures
to hold the event source evas object in case of evas source events
propagation.
Regards....
--
Leandro Dorileo
ProFUSION embedded systems
http://profusion.mobi
>From 45c6ec5c8c9e259658008045d90940c3bc95d601 Mon Sep 17 00:00:00 2001
From: Leandro Dorileo <dori...@profusion.mobi>
Date: Tue, 13 Nov 2012 11:41:39 -0200
Subject: [PATCH] evas: add event source evas object
This patch introduces fields to event Evas_Event_Mouse_* structures
to hold the event source evas object in case of evas source events
propagation.
---
src/lib/Evas.h | 5 +++++
src/lib/canvas/evas_events.c | 10 ++++++++++
2 files changed, 15 insertions(+)
diff --git a/src/lib/Evas.h b/src/lib/Evas.h
index e964e75..5009242 100644
--- a/src/lib/Evas.h
+++ b/src/lib/Evas.h
@@ -1095,6 +1095,7 @@ struct _Evas_Event_Mouse_Down /** Mouse button press
event */
Evas_Point output; /**< The X/Y location of the cursor */
Evas_Coord_Point canvas; /**< The X/Y location of the cursor */
+ Evas_Object *event_src; /**< The Evas Object which actually triggered
the event, used in cases of proxy event propagation */
void *data;
Evas_Modifier *modifiers; /**< modifier keys pressed during the event */
Evas_Lock *locks;
@@ -1112,6 +1113,7 @@ struct _Evas_Event_Mouse_Up /** Mouse button release
event */
Evas_Point output; /**< The X/Y location of the cursor */
Evas_Coord_Point canvas; /**< The X/Y location of the cursor */
+ Evas_Object *event_src; /**< The Evas Object which actually triggered
the event, used in cases of proxy event propagation */
void *data;
Evas_Modifier *modifiers; /**< modifier keys pressed during the event */
Evas_Lock *locks;
@@ -1129,6 +1131,7 @@ struct _Evas_Event_Mouse_In /** Mouse enter event */
Evas_Point output; /**< The X/Y location of the cursor */
Evas_Coord_Point canvas; /**< The X/Y location of the cursor */
+ Evas_Object *event_src; /**< The Evas Object which actually triggered
the event, used in cases of proxy event propagation */
void *data;
Evas_Modifier *modifiers; /**< modifier keys pressed during the event */
Evas_Lock *locks;
@@ -1144,6 +1147,7 @@ struct _Evas_Event_Mouse_Out /** Mouse leave event */
Evas_Point output; /**< The X/Y location of the cursor */
Evas_Coord_Point canvas; /**< The X/Y location of the cursor */
+ Evas_Object *event_src; /**< The Evas Object which actually triggered
the event, used in cases of proxy event propagation */
void *data;
Evas_Modifier *modifiers; /**< modifier keys pressed during the event */
Evas_Lock *locks;
@@ -1159,6 +1163,7 @@ struct _Evas_Event_Mouse_Move /** Mouse move event */
Evas_Position cur; /**< Current mouse position */
Evas_Position prev; /**< Previous mouse position */
+ Evas_Object *event_src; /**< The Evas Object which actually triggered
the event, used in cases of proxy event propagation */
void *data;
Evas_Modifier *modifiers; /**< modifier keys pressed during the event */
Evas_Lock *locks;
diff --git a/src/lib/canvas/evas_events.c b/src/lib/canvas/evas_events.c
index ba643b7..b43c1d6 100644
--- a/src/lib/canvas/evas_events.c
+++ b/src/lib/canvas/evas_events.c
@@ -200,6 +200,8 @@ _evas_event_source_mouse_down_events(Evas_Object *eo_obj,
Evas *eo_e, Evas_Event
_transform_to_src_space(obj, src, &ev->canvas.x, &ev->canvas.y);
+ ev->event_src = eo_obj;
+
if (src->proxy.src_event_in)
src->proxy.src_event_in = eina_list_free(src->proxy.src_event_in);
@@ -270,6 +272,8 @@ _evas_event_source_mouse_move_events(Evas_Object *eo_obj,
Evas *eo_e, Evas_Event
_transform_to_src_space(obj, src, &ev->cur.canvas.x, &ev->cur.canvas.y);
+ ev->event_src = eo_obj;
+
//FIXME: transform previous coords also.
Eina_List *l;
Evas_Object *eo_child;
@@ -447,6 +451,8 @@ _evas_event_source_mouse_up_events(Evas_Object *eo_obj,
Evas *eo_e, Evas_Event_M
_transform_to_src_space(obj, src, &ev->canvas.x, &ev->canvas.y);
+ ev->event_src = eo_obj;
+
Eina_List *l;
Evas_Object *eo_child;
Evas_Object_Protected_Data *child;
@@ -771,6 +777,8 @@ _evas_event_source_mouse_in_events(Evas_Object *eo_obj,
Evas *eo_e, Evas_Event_
_transform_to_src_space(obj, src, &ev->canvas.x, &ev->canvas.y);
+ ev->event_src = eo_obj;
+
Eina_List *ins = NULL;
if (src->is_smart)
{
@@ -825,6 +833,8 @@ _evas_event_source_mouse_out_events(Evas_Object *eo_obj,
Evas *eo_e, Evas_Event_
_transform_to_src_space(obj, src, &ev->canvas.x, &ev->canvas.y);
+ ev->event_src = eo_obj;
+
Eina_List *l;
Evas_Object *eo_child;
Eina_List *copy = evas_event_list_copy(src->proxy.src_event_in);
--
1.8.0
------------------------------------------------------------------------------
Monitor your physical, virtual and cloud infrastructure from a single
web console. Get in-depth insight into apps, servers, databases, vmware,
SAP, cloud infrastructure, etc. Download 30-day Free Trial.
Pricing starts from $795 for 25 servers or applications!
http://p.sf.net/sfu/zoho_dev2dev_nov
_______________________________________________
enlightenment-devel mailing list
enlightenment-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/enlightenment-devel