Hi Raster,

On Thu, Nov 15, 2012 at 02:25:38PM +0900, Carsten Haitzler wrote:
> On Tue, 13 Nov 2012 11:49:47 -0200 Leandro Dorileo <dori...@profusion.mobi>
> said:
> 
> noooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo!
> 
> this breaks abi.
> 
> never ADD structure members in the middle of a structure - add them at the
> END... always! at least in public api's!


Ok, attached goes a version considering the ABI thing. Thank you for reviewing.


> 
> > 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....
> > 


Regards....


-- 
Leandro Dorileo
ProFUSION embedded systems
http://profusion.mobi
>From ebc2826222a26354656a457338a829fe5fb664ef 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..297e364 100644
--- a/src/lib/Evas.h
+++ b/src/lib/Evas.h
@@ -1103,6 +1103,7 @@ struct _Evas_Event_Mouse_Down /** Mouse button press 
event */
    unsigned int      timestamp;
    Evas_Event_Flags  event_flags;
    Evas_Device      *dev;
+   Evas_Object      *event_src; /**< The Evas Object which actually triggered 
the event, used in cases of proxy event propagation */
 };
 
 struct _Evas_Event_Mouse_Up /** Mouse button release event */
@@ -1120,6 +1121,7 @@ struct _Evas_Event_Mouse_Up /** Mouse button release 
event */
    unsigned int      timestamp;
    Evas_Event_Flags  event_flags;
    Evas_Device      *dev;
+   Evas_Object     *event_src; /**< The Evas Object which actually triggered 
the event, used in cases of proxy event propagation */
 };
 
 struct _Evas_Event_Mouse_In /** Mouse enter event */
@@ -1135,6 +1137,7 @@ struct _Evas_Event_Mouse_In /** Mouse enter event */
    unsigned int     timestamp;
    Evas_Event_Flags event_flags;
    Evas_Device     *dev;
+   Evas_Object     *event_src; /**< The Evas Object which actually triggered 
the event, used in cases of proxy event propagation */
 };
 
 struct _Evas_Event_Mouse_Out /** Mouse leave event */
@@ -1150,6 +1153,7 @@ struct _Evas_Event_Mouse_Out /** Mouse leave event */
    unsigned int     timestamp;
    Evas_Event_Flags event_flags;
    Evas_Device     *dev;
+   Evas_Object     *event_src; /**< The Evas Object which actually triggered 
the event, used in cases of proxy event propagation */
 };
 
 struct _Evas_Event_Mouse_Move /** Mouse move event */
@@ -1165,6 +1169,7 @@ struct _Evas_Event_Mouse_Move /** Mouse move event */
    unsigned int     timestamp;
    Evas_Event_Flags event_flags;
    Evas_Device     *dev;
+   Evas_Object     *event_src; /**< The Evas Object which actually triggered 
the event, used in cases of proxy event propagation */
 };
 
 struct _Evas_Event_Mouse_Wheel /** Wheel event */
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