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

Reply via email to