Evas: Simplify eo event mechanism
authorJean-Philippe Andre <jp.andre@samsung.com>
Wed, 1 Jun 2016 11:40:18 +0000 (20:40 +0900)
committerJean-Philippe Andre <jp.andre@samsung.com>
Thu, 2 Jun 2016 05:19:18 +0000 (14:19 +0900)
So, I was stupid. I was relying on legacy callbacks to
trigger eo events, which means that only when a legacy
callback was registered would my new eo events be triggered.

Instead, I can pass the eo event desc & info whenever
calling evas_object_event_callback_call().

src/lib/ecore_evas/ecore_evas.c
src/lib/efl/interfaces/efl_common_internal.h
src/lib/evas/Evas_Common.h
src/lib/evas/canvas/efl_event_pointer.c
src/lib/evas/canvas/evas_callbacks.c
src/lib/evas/canvas/evas_events.c
src/lib/evas/canvas/evas_events_legacy.c
src/lib/evas/canvas/evas_focus.c
src/lib/evas/canvas/evas_object_inform.c
src/lib/evas/canvas/evas_object_main.c
src/lib/evas/include/evas_private.h

index 24c287f..c8728e4 100644 (file)
@@ -4538,7 +4538,7 @@ _direct_key_updown_cb(Ecore_Evas *ee, const Ecore_Event_Key *info, Eina_Bool dow
      eo_event_callback_call(e, EFL_EVENT_KEY_UP, evt);
 
    processed = ev->evas_done;
-   eo_unref(evt);
+   eo_del(evt);
 
    return processed;
 }
index 2523c54..b7eb818 100644 (file)
@@ -50,7 +50,6 @@ struct _Efl_Event_Pointer_Data
                                               (see input vs. feed: this is "input") */
    Evas_Modifier              *modifiers;
    Evas_Lock                  *locks;
-   void                       *legacy; /* DO NOT TOUCH (may contain the legacy event_info) */
    Eina_Bool                   evas_done; /* set by evas */
 };
 
@@ -71,7 +70,6 @@ struct _Efl_Event_Key_Data
    Evas_Lock         *locks;
    Efl_Event_Flags    event_flags;
    Efl_Input_Device  *device;
-   void              *legacy; /* DO NOT TOUCH (may contain the legacy event_info) */
    Eina_Bool          evas_done; /* set by evas */
 };
 
index 65db02c..fbd6554 100644 (file)
@@ -375,7 +375,6 @@ struct _Evas_Event_Mouse_Down /** Mouse button press event */
    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 */
-   void            *reserved; /**< Reserved field for internal use only. @since 1.18 */
 };
 
 struct _Evas_Event_Mouse_Up /** Mouse button release event */
@@ -394,7 +393,6 @@ struct _Evas_Event_Mouse_Up /** Mouse button release event */
    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 */
-   void            *reserved; /**< Reserved field for internal use only. @since 1.18 */
 };
 
 struct _Evas_Event_Mouse_In /** Mouse enter event */
@@ -411,7 +409,6 @@ struct _Evas_Event_Mouse_In /** Mouse enter event */
    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 */
-   void            *reserved; /**< Reserved field for internal use only. @since 1.18 */
 };
 
 struct _Evas_Event_Mouse_Out /** Mouse leave event */
@@ -428,7 +425,6 @@ struct _Evas_Event_Mouse_Out /** Mouse leave event */
    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 */
-   void            *reserved; /**< Reserved field for internal use only. @since 1.18 */
 };
 
 struct _Evas_Event_Mouse_Move /** Mouse move event */
@@ -445,7 +441,6 @@ struct _Evas_Event_Mouse_Move /** Mouse move event */
    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 */
-   void            *reserved; /**< Reserved field for internal use only. @since 1.18 */
 };
 
 struct _Evas_Event_Mouse_Wheel /** Wheel event */
@@ -462,7 +457,6 @@ struct _Evas_Event_Mouse_Wheel /** Wheel event */
    unsigned int     timestamp;
    Evas_Event_Flags event_flags;
    Evas_Device     *dev;
-   void            *reserved; /**< Reserved field for internal use only. @since 1.18 */
 };
 
 struct _Evas_Event_Multi_Down /** Multi button press event */
@@ -482,7 +476,6 @@ struct _Evas_Event_Multi_Down /** Multi button press event */
    unsigned int               timestamp;
    Evas_Event_Flags           event_flags;
    Evas_Device               *dev;
-   void                      *reserved; /**< Reserved field for internal use only. @since 1.18 */
 };
 
 struct _Evas_Event_Multi_Up /** Multi button release event */
@@ -502,7 +495,6 @@ struct _Evas_Event_Multi_Up /** Multi button release event */
    unsigned int               timestamp;
    Evas_Event_Flags           event_flags;
    Evas_Device               *dev;
-   void                      *reserved; /**< Reserved field for internal use only. @since 1.18 */
 };
 
 struct _Evas_Event_Multi_Move /** Multi button down event */
@@ -519,7 +511,6 @@ struct _Evas_Event_Multi_Move /** Multi button down event */
    unsigned int            timestamp;
    Evas_Event_Flags        event_flags;
    Evas_Device            *dev;
-   void                   *reserved; /**< Reserved field for internal use only. @since 1.18 */
 };
 
 struct _Evas_Event_Key_Down /** Key press event */
@@ -537,7 +528,6 @@ struct _Evas_Event_Key_Down /** Key press event */
    Evas_Device     *dev;
 
    unsigned int     keycode; /**< Key scan code numeric value @since 1.10 */
-   void            *reserved; /**< Reserved field for internal use only. @since 1.18 */
 };
 
 struct _Evas_Event_Key_Up /** Key release event */
@@ -555,7 +545,6 @@ struct _Evas_Event_Key_Up /** Key release event */
    Evas_Device     *dev;
 
    unsigned int     keycode; /**< Key scan code numeric value @since 1.10 */
-   void            *reserved; /**< Reserved field for internal use only. @since 1.18 */
 };
 
 struct _Evas_Event_Render_Post /** Send when the frame rendering is done @since 1.8 */
index ca3a6c2..35688dc 100644 (file)
@@ -85,7 +85,6 @@ _efl_event_pointer_eo_base_constructor(Eo *obj, Efl_Event_Pointer_Data *pd EINA_
 EOLIAN static void
 _efl_event_pointer_efl_event_reset(Eo *obj, Efl_Event_Pointer_Data *pd)
 {
-   free(pd->legacy);
    memset(pd, 0, sizeof(*pd));
    pd->eo = obj;
    pd->wheel.dir = EFL_ORIENT_VERTICAL;
index 8b6a996..5bb69aa 100644 (file)
@@ -69,61 +69,12 @@ typedef struct
    Evas_Callback_Type type;
 } _eo_evas_cb_info;
 
-
-static inline void *
-_efl_event_get(const _eo_evas_object_cb_info *info, const Eo_Event *event,
-               const Eo_Event_Description **pdesc, Efl_Event_Flags **pflags)
-{
-   if (!info->data) return NULL;
-
-   /* See also evas_events.c: _pointer_event_create() */
-
-#define EV_CASE(TYPE, NEWTYPE, Type) \
-      case EVAS_CALLBACK_ ## TYPE: \
-        *pdesc = EFL_EVENT_ ## NEWTYPE; \
-        *pflags = &((Evas_Event_ ## Type *) event->info)->event_flags; \
-        return ((Evas_Event_ ## Type *) event->info)->reserved
-   switch (info->type)
-     {
-      EV_CASE(MOUSE_MOVE,  POINTER_MOVE,  Mouse_Move);
-      EV_CASE(MOUSE_OUT,   POINTER_OUT,   Mouse_Out);
-      EV_CASE(MOUSE_IN,    POINTER_IN,    Mouse_In);
-      EV_CASE(MOUSE_DOWN , POINTER_DOWN,  Mouse_Down);
-      EV_CASE(MOUSE_UP,    POINTER_UP,    Mouse_Up);
-      EV_CASE(MULTI_MOVE,  POINTER_MOVE,  Multi_Move);
-      EV_CASE(MULTI_DOWN,  POINTER_DOWN,  Multi_Down);
-      EV_CASE(MULTI_UP,    POINTER_UP,    Multi_Up);
-      EV_CASE(MOUSE_WHEEL, POINTER_WHEEL, Mouse_Wheel);
-      EV_CASE(KEY_DOWN,    KEY_DOWN,      Key_Down);
-      EV_CASE(KEY_UP,      KEY_UP,        Key_Up);
-      default: return NULL;
-     }
-#undef EV_CASE
-}
-
 static Eina_Bool
 _eo_evas_object_cb(void *data, const Eo_Event *event)
 {
    _eo_evas_object_cb_info *info = data;
-   const Eo_Event_Description *desc;
    Evas *evas = evas_object_evas_get(event->object);
-   Efl_Event_Flags *pflags;
-   void *pe;
-
-   pe = _efl_event_get(info, event, &desc, &pflags);
-   if (pe)
-     {
-        Efl_Event_Flags flags = efl_event_flags_get(pe);
-        eo_event_callback_call(event->object, desc, pe);
-        // write changes to event_flags back to the legacy struct
-        *pflags = flags;
-     }
-   if (info->func)
-     {
-        info->func(info->data, evas, event->object, event->info);
-        // if event_flags changed, pe will be fixed in evas_events.c
-     }
-
+   if (info->func) info->func(info->data, evas, event->object, event->info);
    return EINA_TRUE;
 }
 
@@ -228,7 +179,9 @@ evas_event_callback_call(Evas *eo_e, Evas_Callback_Type type, void *event_info)
 }
 
 void
-evas_object_event_callback_call(Evas_Object *eo_obj, Evas_Object_Protected_Data *obj, Evas_Callback_Type type, void *event_info, int event_id)
+evas_object_event_callback_call(Evas_Object *eo_obj, Evas_Object_Protected_Data *obj,
+                                Evas_Callback_Type type, void *event_info, int event_id,
+                                const Eo_Event_Description *eo_event_desc, Efl_Event *eo_event_info)
 {
    /* MEM OK */
    Evas_Button_Flags flags = EVAS_BUTTON_NONE;
@@ -269,6 +222,10 @@ evas_object_event_callback_call(Evas_Object *eo_obj, Evas_Object_Protected_Data
                      ev->flags &= ~(EVAS_BUTTON_DOUBLE_CLICK | EVAS_BUTTON_TRIPLE_CLICK);
                 }
               obj->last_mouse_down_counter = e->last_mouse_down_counter;
+              if (eo_event_info)
+                {
+                   efl_event_pointer_button_flags_set(eo_event_info, ev->flags);
+                }
               break;
            }
       case EVAS_CALLBACK_MOUSE_UP:
@@ -282,23 +239,62 @@ evas_object_event_callback_call(Evas_Object *eo_obj, Evas_Object_Protected_Data
                      ev->flags &= ~(EVAS_BUTTON_DOUBLE_CLICK | EVAS_BUTTON_TRIPLE_CLICK);
                 }
               obj->last_mouse_up_counter = e->last_mouse_up_counter;
+              if (eo_event_info)
+                {
+                   efl_event_pointer_button_flags_set(eo_event_info, ev->flags);
+                }
               break;
            }
       default:
          break;
      }
 
+   /* new input events */
+   if (eo_event_desc)
+     {
+        Efl_Event_Flags *pevflags = NULL;
+
+#define EV_CASE(TYPE, NEWTYPE, Type) \
+   case EVAS_CALLBACK_ ## TYPE: \
+   pevflags = &(((Evas_Event_ ## Type *) event_info)->event_flags); \
+   break
+        switch (type)
+          {
+           EV_CASE(MOUSE_MOVE,  POINTER_MOVE,  Mouse_Move);
+           EV_CASE(MOUSE_OUT,   POINTER_OUT,   Mouse_Out);
+           EV_CASE(MOUSE_IN,    POINTER_IN,    Mouse_In);
+           EV_CASE(MOUSE_DOWN , POINTER_DOWN,  Mouse_Down);
+           EV_CASE(MOUSE_UP,    POINTER_UP,    Mouse_Up);
+           EV_CASE(MULTI_MOVE,  POINTER_MOVE,  Multi_Move);
+           EV_CASE(MULTI_DOWN,  POINTER_DOWN,  Multi_Down);
+           EV_CASE(MULTI_UP,    POINTER_UP,    Multi_Up);
+           EV_CASE(MOUSE_WHEEL, POINTER_WHEEL, Mouse_Wheel);
+           EV_CASE(KEY_DOWN,    KEY_DOWN,      Key_Down);
+           EV_CASE(KEY_UP,      KEY_UP,        Key_Up);
+           default: break;
+          }
+#undef EV_CASE
+
+        eo_event_callback_call(eo_obj, eo_event_desc, eo_event_info);
+        if (pevflags) *pevflags = efl_event_flags_get(eo_event_info);
+     }
+
+   /* legacy callbacks - relying on Evas.Object events */
    eo_event_callback_call(eo_obj, _legacy_evas_callback_table[type], event_info);
 
    if (type == EVAS_CALLBACK_MOUSE_DOWN)
      {
         Evas_Event_Mouse_Down *ev = event_info;
         ev->flags = flags;
+        if (eo_event_info)
+          efl_event_pointer_button_flags_set(eo_event_info, ev->flags);
      }
    else if (type == EVAS_CALLBACK_MOUSE_UP)
      {
         Evas_Event_Mouse_Up *ev = event_info;
         ev->flags = flags;
+        if (eo_event_info)
+          efl_event_pointer_button_flags_set(eo_event_info, ev->flags);
      }
 
  nothing_here:
@@ -308,7 +304,7 @@ evas_object_event_callback_call(Evas_Object *eo_obj, Evas_Object_Protected_Data
               (type <= EVAS_CALLBACK_KEY_UP))
           {
              Evas_Object_Protected_Data *smart_parent = eo_data_scope_get(obj->smart.parent, EVAS_OBJECT_CLASS);
-             evas_object_event_callback_call(obj->smart.parent, smart_parent, type, event_info, event_id);
+             evas_object_event_callback_call(obj->smart.parent, smart_parent, type, event_info, event_id, eo_event_desc, eo_event_info);
           }
      }
    _evas_unwalk(e);
index e3c837f..7fac4ad 100644 (file)
@@ -4,6 +4,47 @@
 #define EFL_INTERNAL_UNSTABLE
 #include "interfaces/efl_common_internal.h"
 
+static const Eo_Event_Description *_efl_event_desc_table[EVAS_CALLBACK_LAST] =
+{
+   EFL_EVENT_POINTER_IN,
+   EFL_EVENT_POINTER_OUT,
+   EFL_EVENT_POINTER_DOWN,
+   EFL_EVENT_POINTER_UP,
+   EFL_EVENT_POINTER_MOVE,
+   EFL_EVENT_POINTER_WHEEL,
+   EFL_EVENT_POINTER_DOWN,
+   EFL_EVENT_POINTER_UP,
+   EFL_EVENT_POINTER_MOVE,
+   NULL, // EVAS_OBJECT_EVENT_FREE,
+   EFL_EVENT_KEY_DOWN,
+   EFL_EVENT_KEY_UP,
+   NULL, // EVAS_OBJECT_EVENT_FOCUS_IN,
+   NULL, // EVAS_OBJECT_EVENT_FOCUS_OUT,
+   NULL, // EVAS_OBJECT_EVENT_SHOW,
+   NULL, // EVAS_OBJECT_EVENT_HIDE,
+   NULL, // EVAS_OBJECT_EVENT_MOVE,
+   NULL, // EVAS_OBJECT_EVENT_RESIZE,
+   NULL, // EVAS_OBJECT_EVENT_RESTACK,
+   NULL, // EVAS_OBJECT_EVENT_DEL,
+   NULL, // EVAS_OBJECT_EVENT_HOLD,
+   NULL, // EVAS_OBJECT_EVENT_CHANGED_SIZE_HINTS,
+   NULL, // EVAS_OBJECT_EVENT_IMAGE_PRELOADED,
+   NULL, // EVAS_CANVAS_EVENT_FOCUS_IN,
+   NULL, // EVAS_CANVAS_EVENT_FOCUS_OUT,
+   NULL, // EVAS_CANVAS_EVENT_RENDER_FLUSH_PRE,
+   NULL, // EVAS_CANVAS_EVENT_RENDER_FLUSH_POST,
+   NULL, // EVAS_CANVAS_EVENT_OBJECT_FOCUS_IN,
+   NULL, // EVAS_CANVAS_EVENT_OBJECT_FOCUS_OUT,
+   NULL, // EVAS_OBJECT_EVENT_IMAGE_UNLOADED,
+   NULL, // EVAS_CANVAS_EVENT_RENDER_PRE,
+   NULL, // EVAS_CANVAS_EVENT_RENDER_POST,
+   NULL, // EVAS_OBJECT_EVENT_IMAGE_RESIZE,
+   NULL, // EVAS_CANVAS_EVENT_DEVICE_CHANGED,
+   NULL, // EVAS_CANVAS_EVENT_AXIS_UPDATE,
+   NULL, // EVAS_CANVAS_EVENT_VIEWPORT_RESIZE
+};
+
+
 static Eina_List *
 _evas_event_object_list_in_get(Evas *eo_e, Eina_List *in,
                                const Eina_Inlist *list, Evas_Object *stop,
@@ -15,14 +56,14 @@ evas_event_list_copy(Eina_List *list);
 static void
 _canvas_event_feed_mouse_move_internal(Eo *eo_e, Evas_Public_Data *e, int x, int y,
                                        unsigned int timestamp, const void *data,
-                                       Efl_Event_Pointer_Data *parent_pe);
+                                       Efl_Event_Pointer *parent_pe);
 
 static void
 _canvas_event_feed_multi_up_internal(Evas *eo_e, void *_pd, int d, int x, int y,
                                      double rad, double radx, double rady, double pres, double ang,
                                      double fx, double fy, Evas_Button_Flags flags,
                                      unsigned int timestamp, const void *data,
-                                     Efl_Event_Pointer_Data *parent_pe);
+                                     Efl_Event_Pointer *parent_pe);
 
 static void
 _evas_event_havemap_adjust(Evas_Object *eo_obj EINA_UNUSED, Evas_Object_Protected_Data *obj, Evas_Coord *x, Evas_Coord *y, Eina_Bool mouse_grabbed)
@@ -46,13 +87,10 @@ _evas_event_havemap_adjust(Evas_Object *eo_obj EINA_UNUSED, Evas_Object_Protecte
      }
 }
 
-static inline Efl_Event_Pointer *
-_pointer_event_create(Evas_Callback_Type type, void *ev,
-                      Efl_Event_Pointer_Data *parentev,
-                      Efl_Event_Pointer_Data **evdata)
+static inline Efl_Event *
+_efl_event_create(Efl_Event *evt, Evas_Callback_Type type, void *ev,
+                  Efl_Event *parentev, Efl_Event_Flags **pflags)
 {
-   Efl_Event_Pointer *evt = NULL;
-
    if (!ev) return NULL;
 
    /* This function converts an existing evas info struct to the efl pointer
@@ -64,25 +102,26 @@ _pointer_event_create(Evas_Callback_Type type, void *ev,
     * should be temporary code. Should be.
     */
 
-#define EV_CASE(TYPE, Type) \
+#define EV_CASE(TYPE, Type, OBJTYP, objtyp) \
    case EVAS_CALLBACK_ ## TYPE: \
-     evt = efl_event_pointer_instance_get(EFL_EVENT_POINTER_CLASS, \
-             parentev ? parentev->eo : NULL, (void **) evdata); \
-     efl_event_pointer_legacy_info_set(evt, ev, type); \
-     ((Evas_Event_ ## Type *) ev)->reserved = evt; \
+     if (!evt) evt = eo_add(EFL_EVENT_ ## OBJTYP ## _CLASS, parentev); \
+     efl_event_ ## objtyp ## _legacy_info_set(evt, ev, type); \
+     if (pflags) *pflags = &(((Evas_Event_ ## Type *) ev)->event_flags); \
      break;
 
    switch (type)
      {
-      EV_CASE(MOUSE_MOVE, Mouse_Move);
-      EV_CASE(MOUSE_OUT, Mouse_Out);
-      EV_CASE(MOUSE_IN, Mouse_In);
-      EV_CASE(MOUSE_DOWN, Mouse_Down);
-      EV_CASE(MOUSE_UP, Mouse_Up);
-      EV_CASE(MULTI_MOVE, Multi_Move);
-      EV_CASE(MULTI_DOWN, Multi_Down);
-      EV_CASE(MULTI_UP, Multi_Up);
-      EV_CASE(MOUSE_WHEEL, Mouse_Wheel);
+      EV_CASE(MOUSE_MOVE, Mouse_Move, POINTER, pointer);
+      EV_CASE(MOUSE_OUT, Mouse_Out, POINTER, pointer);
+      EV_CASE(MOUSE_IN, Mouse_In, POINTER, pointer);
+      EV_CASE(MOUSE_DOWN, Mouse_Down, POINTER, pointer);
+      EV_CASE(MOUSE_UP, Mouse_Up, POINTER, pointer);
+      EV_CASE(MULTI_MOVE, Multi_Move, POINTER, pointer);
+      EV_CASE(MULTI_DOWN, Multi_Down, POINTER, pointer);
+      EV_CASE(MULTI_UP, Multi_Up, POINTER, pointer);
+      EV_CASE(MOUSE_WHEEL, Mouse_Wheel, POINTER, pointer);
+      EV_CASE(KEY_DOWN, Key_Down, KEY, key);
+      EV_CASE(KEY_UP, Key_Up, KEY, key);
       default:
         DBG("Support for event type %d not implemented yet.", type);
         break;
@@ -90,41 +129,15 @@ _pointer_event_create(Evas_Callback_Type type, void *ev,
 
 #undef EV_CASE
 
-   if (!evt && evdata) *evdata = NULL;
    return evt;
 }
 
-static inline void
-_pointer_event_flags_adjust(Efl_Event_Pointer_Data *pedata,
-                            Evas_Callback_Type type, const void *ev)
-{
-#define EV_CASE(TYPE, Type) \
-   case EVAS_CALLBACK_ ## TYPE: \
-     pedata->event_flags = ((Evas_Event_ ## Type *) ev)->event_flags; \
-     break;
-
-   switch (type)
-     {
-      EV_CASE(MOUSE_MOVE, Mouse_Move);
-      EV_CASE(MOUSE_OUT, Mouse_Out);
-      EV_CASE(MOUSE_IN, Mouse_In);
-      EV_CASE(MOUSE_DOWN, Mouse_Down);
-      EV_CASE(MOUSE_UP, Mouse_Up);
-      EV_CASE(MULTI_MOVE, Multi_Move);
-      EV_CASE(MULTI_DOWN, Multi_Down);
-      EV_CASE(MULTI_UP, Multi_Up);
-      EV_CASE(MOUSE_WHEEL, Mouse_Wheel);
-      default: break;
-     }
-
-#undef EV_CASE
-}
-
-#define EV_CALL(_eo_obj, _obj, _typ, _ev, _id, _pe) do { \
-   if (!_pe) _pe = _pointer_event_create(_typ, _ev, parent_pe, & _pe ## data); \
-   else efl_event_pointer_legacy_info_set(_pe, _ev, _typ); \
-   evas_object_event_callback_call(_eo_obj, _obj, _typ, _ev, _id); \
-   _pointer_event_flags_adjust(_pe ## data, _typ, _ev); \
+#define EV_CALL(_eo_obj, _obj, _typ, _info, _id, _eoev, _parent_ev) do { \
+   Efl_Event_Flags *_info_pflags = NULL; \
+   _eoev = _efl_event_create(_eoev, _typ, _info, _parent_ev, &_info_pflags); \
+   evas_object_event_callback_call(_eo_obj, _obj, _typ, _info, _id, \
+                                   _efl_event_desc_table[_typ], _eoev); \
+   if (_info_pflags) *_info_pflags = efl_event_flags_get(_eoev); \
    } while (0)
 #define EV_RESET(a) do { if (a) efl_event_reset(a); } while (0)
 #define EV_DEL(a) do { if (a) { eo_unref(a); } a = NULL; } while (0)
@@ -286,7 +299,7 @@ _transform_to_src_space(Evas_Object_Protected_Data *obj, Evas_Object_Protected_D
 static void
 _evas_event_source_mouse_down_events(Evas_Object *eo_obj, Evas *eo_e,
                                      Evas_Event_Mouse_Down *ev, int event_id,
-                                     Efl_Event_Pointer_Data *parent_pe)
+                                     Efl_Event_Pointer *parent_pe)
 {
    Evas_Object_Protected_Data *obj = eo_data_scope_get(eo_obj, EVAS_OBJECT_CLASS);
    Evas_Object *eo_src = _evas_object_image_source_get(eo_obj);
@@ -294,7 +307,6 @@ _evas_event_source_mouse_down_events(Evas_Object *eo_obj, Evas *eo_e,
    Evas_Public_Data *e = eo_data_scope_get(eo_e, EVAS_CANVAS_CLASS);
    Evas_Coord_Point canvas = ev->canvas;
    Evas_Object_Protected_Data *child;
-   Efl_Event_Pointer_Data *pedata = NULL;
    Efl_Event_Pointer *pe = NULL;
    Evas_Object *eo_child;
    Eina_List *l;
@@ -354,7 +366,7 @@ _evas_event_source_mouse_down_events(Evas_Object *eo_obj, Evas *eo_e,
         _evas_event_havemap_adjust(eo_child, child, &ev->canvas.x,
                                    &ev->canvas.y,
                                    child->mouse_grabbed);
-        EV_CALL(eo_child, child, EVAS_CALLBACK_MOUSE_DOWN, ev, event_id, pe);
+        EV_CALL(eo_child, child, EVAS_CALLBACK_MOUSE_DOWN, ev, event_id, pe, parent_pe);
         if (e->delete_me) break;
         if (obj->pointer_mode == EVAS_OBJECT_POINTER_MODE_NOGRAB_NO_REPEAT_UPDOWN)
           break;
@@ -367,14 +379,13 @@ _evas_event_source_mouse_down_events(Evas_Object *eo_obj, Evas *eo_e,
 static void
 _evas_event_source_mouse_move_events(Evas_Object *eo_obj, Evas *eo_e,
                                      Evas_Event_Mouse_Move *ev, int event_id,
-                                     Efl_Event_Pointer_Data *parent_pe)
+                                     Efl_Event_Pointer *parent_pe)
 {
    Evas_Object_Protected_Data *obj = eo_data_scope_get(eo_obj, EVAS_OBJECT_CLASS);
    Evas_Object *eo_src = _evas_object_image_source_get(eo_obj);
    Evas_Object_Protected_Data *src = eo_data_scope_get(eo_src, EVAS_OBJECT_CLASS);
    Evas_Public_Data *e = eo_data_scope_get(eo_e, EVAS_CANVAS_CLASS);
    Evas_Coord_Point canvas = ev->cur.canvas;
-   Efl_Event_Pointer_Data *pedata = NULL;
    Efl_Event_Pointer *pe = NULL;
 
    if (obj->delete_me || src->delete_me || e->is_frozen) return;
@@ -407,7 +418,7 @@ _evas_event_source_mouse_move_events(Evas_Object *eo_obj, Evas *eo_e,
                   _evas_event_havemap_adjust(eo_child, child, &ev->cur.canvas.x,
                                              &ev->cur.canvas.y,
                                              child->mouse_grabbed);
-                  EV_CALL(eo_child, child, EVAS_CALLBACK_MOUSE_MOVE, ev, event_id, pe);
+                  EV_CALL(eo_child, child, EVAS_CALLBACK_MOUSE_MOVE, ev, event_id, pe, parent_pe);
                }
              else
                outs = eina_list_append(outs, eo_child);
@@ -436,7 +447,7 @@ _evas_event_source_mouse_move_events(Evas_Object *eo_obj, Evas *eo_e,
                     proxy_write->src_event_in = eina_list_remove(proxy_write->src_event_in, eo_child);
                   EINA_COW_WRITE_END(evas_object_proxy_cow, src->proxy, proxy_write);
 
-                  EV_CALL(eo_child, child, EVAS_CALLBACK_MOUSE_OUT, ev, event_id, pe);
+                  EV_CALL(eo_child, child, EVAS_CALLBACK_MOUSE_OUT, ev, event_id, pe, parent_pe);
                }
           }
      }
@@ -475,7 +486,7 @@ _evas_event_source_mouse_move_events(Evas_Object *eo_obj, Evas *eo_e,
                   _evas_event_havemap_adjust(eo_child, child, &ev->cur.canvas.x,
                                              &ev->cur.canvas.y,
                                              child->mouse_grabbed);
-                  EV_CALL(eo_child, child, EVAS_CALLBACK_MOUSE_MOVE, ev, event_id, pe);
+                  EV_CALL(eo_child, child, EVAS_CALLBACK_MOUSE_MOVE, ev, event_id, pe, parent_pe);
                   EV_RESET(pe);
                }
              else if (child->mouse_in)
@@ -488,7 +499,7 @@ _evas_event_source_mouse_move_events(Evas_Object *eo_obj, Evas *eo_e,
                                              &ev->cur.canvas.y,
                                              child->mouse_grabbed);
                   // note: Mouse_Move and Mouse_Out are compatible (bad!)
-                  EV_CALL(eo_child, child, EVAS_CALLBACK_MOUSE_OUT, ev, event_id, pe);
+                  EV_CALL(eo_child, child, EVAS_CALLBACK_MOUSE_OUT, ev, event_id, pe, parent_pe);
                   EV_RESET(pe);
                   if (e->delete_me) break;
 
@@ -514,7 +525,7 @@ _evas_event_source_mouse_move_events(Evas_Object *eo_obj, Evas *eo_e,
                                                    &ev->cur.canvas.y,
                                                    child->mouse_grabbed);
                         // note: Mouse_Move and Mouse_In are compatible (bad!)
-                        EV_CALL(eo_child, child, EVAS_CALLBACK_MOUSE_IN, ev, event_id2, pe);
+                        EV_CALL(eo_child, child, EVAS_CALLBACK_MOUSE_IN, ev, event_id2, pe, parent_pe);
                         if (e->delete_me) break;
                      }
                 }
@@ -541,14 +552,13 @@ _evas_event_source_mouse_move_events(Evas_Object *eo_obj, Evas *eo_e,
 static void
 _evas_event_source_mouse_up_events(Evas_Object *eo_obj, Evas *eo_e,
                                    Evas_Event_Mouse_Up *ev, int event_id,
-                                   Efl_Event_Pointer_Data *parent_pe)
+                                   Efl_Event_Pointer *parent_pe)
 {
    Evas_Object_Protected_Data *obj = eo_data_scope_get(eo_obj, EVAS_OBJECT_CLASS);
    Evas_Object *eo_src = _evas_object_image_source_get(eo_obj);
    Evas_Object_Protected_Data *src = eo_data_scope_get(eo_src, EVAS_OBJECT_CLASS);
    Evas_Public_Data *e = eo_data_scope_get(eo_e, EVAS_CANVAS_CLASS);
    Evas_Coord_Point canvas = ev->canvas;
-   Efl_Event_Pointer_Data *pedata = NULL;
    Efl_Event_Pointer *pe = NULL;
 
    if (obj->delete_me || src->delete_me || e->is_frozen) return;
@@ -580,7 +590,7 @@ _evas_event_source_mouse_up_events(Evas_Object *eo_obj, Evas *eo_e,
                                    &ev->canvas.x,
                                    &ev->canvas.y,
                                    child->mouse_grabbed);
-        EV_CALL(eo_child, child, EVAS_CALLBACK_MOUSE_UP, ev, event_id, pe);
+        EV_CALL(eo_child, child, EVAS_CALLBACK_MOUSE_UP, ev, event_id, pe, parent_pe);
         if (e->delete_me) break;
         if (obj->pointer_mode ==
             EVAS_OBJECT_POINTER_MODE_NOGRAB_NO_REPEAT_UPDOWN)
@@ -612,7 +622,7 @@ _evas_event_source_hold_events(Evas_Object *eo_obj, Evas *eo_e EINA_UNUSED, void
         if (src->delete_me) return;
         child = eo_data_scope_get(child_eo, EVAS_OBJECT_CLASS);
         evas_object_event_callback_call(child_eo, child, EVAS_CALLBACK_HOLD, ev,
-                                        event_id);
+                                        event_id, NULL, NULL);
         if (src->layer->evas->delete_me) break;
      }
 }
@@ -620,14 +630,13 @@ _evas_event_source_hold_events(Evas_Object *eo_obj, Evas *eo_e EINA_UNUSED, void
 static void
 _evas_event_source_wheel_events(Evas_Object *eo_obj, Evas *eo_e,
                                 Evas_Event_Mouse_Wheel *ev, int event_id,
-                                Efl_Event_Pointer_Data *parent_pe)
+                                Efl_Event_Pointer *parent_pe)
 {
    Evas_Object_Protected_Data *obj = eo_data_scope_get(eo_obj, EVAS_OBJECT_CLASS);
    Evas_Object *eo_src = _evas_object_image_source_get(eo_obj);
    Evas_Object_Protected_Data *src = eo_data_scope_get(eo_src, EVAS_OBJECT_CLASS);
    Evas_Public_Data *e = eo_data_scope_get(eo_e, EVAS_CANVAS_CLASS);
    Evas_Coord_Point canvas = ev->canvas;
-   Efl_Event_Pointer_Data *pedata = NULL;
    Efl_Event_Pointer *pe = NULL;
 
    if (obj->delete_me || src->delete_me || obj->layer->evas->is_frozen) return;
@@ -649,7 +658,7 @@ _evas_event_source_wheel_events(Evas_Object *eo_obj, Evas *eo_e,
                                    &ev->canvas.x,
                                    &ev->canvas.y,
                                    child->mouse_grabbed);
-        EV_CALL(eo_child, child, EVAS_CALLBACK_MOUSE_WHEEL, ev, event_id, pe);
+        EV_CALL(eo_child, child, EVAS_CALLBACK_MOUSE_WHEEL, ev, event_id, pe, parent_pe);
         if (e->delete_me) break;
      }
    eina_list_free(copy);
@@ -660,14 +669,13 @@ _evas_event_source_wheel_events(Evas_Object *eo_obj, Evas *eo_e,
 static void
 _evas_event_source_multi_down_events(Evas_Object *eo_obj, Evas *eo_e,
                                      Evas_Event_Multi_Down *ev, int event_id,
-                                     Efl_Event_Pointer_Data *parent_pe)
+                                     Efl_Event_Pointer *parent_pe)
 {
    Evas_Object_Protected_Data *obj = eo_data_scope_get(eo_obj, EVAS_OBJECT_CLASS);
    Evas_Object *eo_src = _evas_object_image_source_get(eo_obj);
    Evas_Object_Protected_Data *src = eo_data_scope_get(eo_src, EVAS_OBJECT_CLASS);
    Evas_Public_Data *e = eo_data_scope_get(eo_e, EVAS_CANVAS_CLASS);
    Evas_Coord_Precision_Point canvas = ev->canvas;
-   Efl_Event_Pointer_Data *pedata = NULL;
    Efl_Event_Pointer *pe = NULL;
 
    if (obj->delete_me || src->delete_me || obj->layer->evas->is_frozen) return;
@@ -703,7 +711,7 @@ _evas_event_source_multi_down_events(Evas_Object *eo_obj, Evas *eo_e,
                                    &ev->canvas.y,
                                    child->mouse_grabbed);
         child = eo_data_scope_get(eo_child, EVAS_OBJECT_CLASS);
-        EV_CALL(eo_child, child, EVAS_CALLBACK_MULTI_DOWN, ev, event_id, pe);
+        EV_CALL(eo_child, child, EVAS_CALLBACK_MULTI_DOWN, ev, event_id, pe, parent_pe);
         if (e->delete_me) break;
      }
     eina_list_free(copy);
@@ -715,14 +723,13 @@ _evas_event_source_multi_down_events(Evas_Object *eo_obj, Evas *eo_e,
 static void
 _evas_event_source_multi_up_events(Evas_Object *eo_obj, Evas *eo_e,
                                    Evas_Event_Multi_Up *ev, int event_id,
-                                   Efl_Event_Pointer_Data *parent_pe)
+                                   Efl_Event_Pointer *parent_pe)
 {
    Evas_Object_Protected_Data *obj = eo_data_scope_get(eo_obj, EVAS_OBJECT_CLASS);
    Evas_Object *eo_src = _evas_object_image_source_get(eo_obj);
    Evas_Object_Protected_Data *src = eo_data_scope_get(eo_src, EVAS_OBJECT_CLASS);
    Evas_Public_Data *e = eo_data_scope_get(eo_e, EVAS_CANVAS_CLASS);
    Evas_Coord_Precision_Point canvas = ev->canvas;
-   Efl_Event_Pointer_Data *pedata = NULL;
    Efl_Event_Pointer *pe = NULL;
 
    if (obj->delete_me || src->delete_me || obj->layer->evas->is_frozen) return;
@@ -752,7 +759,7 @@ _evas_event_source_multi_up_events(Evas_Object *eo_obj, Evas *eo_e,
                                    &ev->canvas.x,
                                    &ev->canvas.y,
                                    child->mouse_grabbed);
-        EV_CALL(eo_child, child, EVAS_CALLBACK_MULTI_UP, ev, event_id, pe);
+        EV_CALL(eo_child, child, EVAS_CALLBACK_MULTI_UP, ev, event_id, pe, parent_pe);
         if (e->delete_me || e->is_frozen) break;
      }
     eina_list_free(copy);
@@ -764,14 +771,13 @@ _evas_event_source_multi_up_events(Evas_Object *eo_obj, Evas *eo_e,
 static void
 _evas_event_source_multi_move_events(Evas_Object *eo_obj, Evas *eo_e,
                                      Evas_Event_Multi_Move *ev, int event_id,
-                                     Efl_Event_Pointer_Data *parent_pe)
+                                     Efl_Event_Pointer *parent_pe)
 {
    Evas_Object_Protected_Data *obj = eo_data_scope_get(eo_obj, EVAS_OBJECT_CLASS);
    Evas_Object *eo_src = _evas_object_image_source_get(eo_obj);
    Evas_Object_Protected_Data *src = eo_data_scope_get(eo_src, EVAS_OBJECT_CLASS);
    Evas_Public_Data *e = eo_data_scope_get(eo_e, EVAS_CANVAS_CLASS);
    Evas_Coord_Precision_Point canvas = ev->cur.canvas;
-   Efl_Event_Pointer_Data *pedata = NULL;
    Efl_Event_Pointer *pe = NULL;
 
    if (obj->delete_me || src->delete_me || e->is_frozen) return;
@@ -806,7 +812,7 @@ _evas_event_source_multi_move_events(Evas_Object *eo_obj, Evas *eo_e,
                                              &ev->cur.canvas.y,
                                              child->mouse_grabbed);
                   child = eo_data_scope_get(eo_child, EVAS_OBJECT_CLASS);
-                  EV_CALL(eo_child, child, EVAS_CALLBACK_MULTI_MOVE, ev, event_id, pe);
+                  EV_CALL(eo_child, child, EVAS_CALLBACK_MULTI_MOVE, ev, event_id, pe, parent_pe);
                   if (e->delete_me || e->is_frozen) break;
                }
           }
@@ -847,7 +853,7 @@ _evas_event_source_multi_move_events(Evas_Object *eo_obj, Evas *eo_e,
                                              &ev->cur.canvas.y,
                                              child->mouse_grabbed);
                   child = eo_data_scope_get(eo_child, EVAS_OBJECT_CLASS);
-                  EV_CALL(eo_child, child, EVAS_CALLBACK_MULTI_MOVE, ev, event_id, pe);
+                  EV_CALL(eo_child, child, EVAS_CALLBACK_MULTI_MOVE, ev, event_id, pe, parent_pe);
                   if (e->delete_me || e->is_frozen) break;
                }
           }
@@ -872,14 +878,13 @@ _evas_event_source_multi_move_events(Evas_Object *eo_obj, Evas *eo_e,
 static void
 _evas_event_source_mouse_in_events(Evas_Object *eo_obj, Evas *eo_e,
                                    Evas_Event_Mouse_In *ev, int event_id,
-                                   Efl_Event_Pointer_Data *parent_pe)
+                                   Efl_Event_Pointer *parent_pe)
 {
    Evas_Object_Protected_Data *obj = eo_data_scope_get(eo_obj, EVAS_OBJECT_CLASS);
    Evas_Object *eo_src = _evas_object_image_source_get(eo_obj);
    Evas_Object_Protected_Data *src = eo_data_scope_get(eo_src, EVAS_OBJECT_CLASS);
    Evas_Public_Data *e = eo_data_scope_get(eo_e, EVAS_CANVAS_CLASS);
    Evas_Coord_Point canvas = ev->canvas;
-   Efl_Event_Pointer_Data *pedata = NULL;
    Efl_Event_Pointer *pe = NULL;
    Evas_Object *eo_child;
    Eina_List *ins = NULL;
@@ -916,7 +921,7 @@ _evas_event_source_mouse_in_events(Evas_Object *eo_obj, Evas *eo_e,
              _evas_event_havemap_adjust(eo_child, child, &ev->canvas.x,
                                         &ev->canvas.y,
                                         child->mouse_grabbed);
-             EV_CALL(eo_child, child, EVAS_CALLBACK_MOUSE_IN, ev, event_id, pe);
+             EV_CALL(eo_child, child, EVAS_CALLBACK_MOUSE_IN, ev, event_id, pe, parent_pe);
              if (e->delete_me || e->is_frozen) break;
           }
      }
@@ -935,14 +940,13 @@ _evas_event_source_mouse_in_events(Evas_Object *eo_obj, Evas *eo_e,
 static void
 _evas_event_source_mouse_out_events(Evas_Object *eo_obj, Evas *eo_e,
                                     Evas_Event_Mouse_Out *ev, int event_id,
-                                    Efl_Event_Pointer_Data *parent_pe)
+                                    Efl_Event_Pointer *parent_pe)
 {
    Evas_Object_Protected_Data *obj = eo_data_scope_get(eo_obj, EVAS_OBJECT_CLASS);
    Evas_Object *eo_src = _evas_object_image_source_get(eo_obj);
    Evas_Object_Protected_Data *src = eo_data_scope_get(eo_src, EVAS_OBJECT_CLASS);
    Evas_Public_Data *e = eo_data_scope_get(eo_e, EVAS_CANVAS_CLASS);
    Evas_Coord_Point canvas = ev->canvas;
-   Efl_Event_Pointer_Data *pedata = NULL;
    Efl_Event_Pointer *pe = NULL;
    Evas_Object *eo_child;
    Eina_List *l;
@@ -971,7 +975,7 @@ _evas_event_source_mouse_out_events(Evas_Object *eo_obj, Evas *eo_e,
 
         _evas_event_havemap_adjust(eo_child, child, &ev->canvas.x,
                                    &ev->canvas.y,  child->mouse_grabbed);
-        EV_CALL(eo_child, child, EVAS_CALLBACK_MOUSE_OUT, ev, event_id, pe);
+        EV_CALL(eo_child, child, EVAS_CALLBACK_MOUSE_OUT, ev, event_id, pe, parent_pe);
         if (e->is_frozen) continue;
      }
 
@@ -1139,10 +1143,9 @@ evas_event_thaw_eval(Evas *eo_e)
 static void
 _canvas_event_feed_mouse_down_internal(Eo *eo_e, int b, Evas_Button_Flags flags,
                                        unsigned int timestamp, const void *data,
-                                       Efl_Event_Pointer_Data *parent_pe)
+                                       Efl_Event_Pointer *parent_pe)
 {
    Evas_Public_Data *e = eo_data_scope_get(eo_e, EVAS_CANVAS_CLASS);
-   Efl_Event_Pointer_Data *pedata = NULL;
    Efl_Event_Pointer *pe = NULL;
    Eina_List *l, *copy;
    Evas_Event_Mouse_Down ev;
@@ -1218,9 +1221,9 @@ _canvas_event_feed_mouse_down_internal(Eo *eo_e, int b, Evas_Button_Flags flags,
         ev.canvas.x = e->pointer.x;
         ev.canvas.y = e->pointer.y;
         _evas_event_havemap_adjust(eo_obj, obj, &ev.canvas.x, &ev.canvas.y, obj->mouse_grabbed);
-        EV_CALL(eo_obj, obj, EVAS_CALLBACK_MOUSE_DOWN, &ev, event_id, pe);
+        EV_CALL(eo_obj, obj, EVAS_CALLBACK_MOUSE_DOWN, &ev, event_id, pe, parent_pe);
         if ((obj->proxy->is_proxy) && (obj->proxy->src_events))
-          _evas_event_source_mouse_down_events(eo_obj, eo_e, &ev, event_id, pedata);
+          _evas_event_source_mouse_down_events(eo_obj, eo_e, &ev, event_id, pe);
         if (e->is_frozen || e->delete_me)  break;
         if (obj->pointer_mode == EVAS_OBJECT_POINTER_MODE_NOGRAB_NO_REPEAT_UPDOWN)
           break;
@@ -1243,10 +1246,9 @@ evas_event_feed_mouse_down(Eo *eo_e, int b, Evas_Button_Flags flags, unsigned in
 
 static int
 _post_up_handle(Evas *eo_e, unsigned int timestamp, const void *data,
-                Efl_Event_Pointer_Data *parent_pe)
+                Efl_Event_Pointer *parent_pe)
 {
    Evas_Public_Data *e = eo_data_scope_get(eo_e, EVAS_CANVAS_CLASS);
-   Efl_Event_Pointer_Data *pedata = NULL;
    Efl_Event_Pointer *pe = NULL;
    Eina_List *l, *copy, *ins, *ll;
    Evas_Event_Mouse_Out ev;
@@ -1287,9 +1289,9 @@ _post_up_handle(Evas *eo_e, unsigned int timestamp, const void *data,
                   ev.canvas.y = e->pointer.y;
                   _evas_event_havemap_adjust(eo_obj, obj, &ev.canvas.x,
                                              &ev.canvas.y, obj->mouse_grabbed);
-                  EV_CALL(eo_obj, obj, EVAS_CALLBACK_MOUSE_OUT, &ev, event_id, pe);
+                  EV_CALL(eo_obj, obj, EVAS_CALLBACK_MOUSE_OUT, &ev, event_id, pe, parent_pe);
                   if ((obj->proxy->is_proxy) && (obj->proxy->src_events))
-                    _evas_event_source_mouse_out_events(eo_obj, eo_e, &ev, event_id, pedata);
+                    _evas_event_source_mouse_out_events(eo_obj, eo_e, &ev, event_id, pe);
                   if (e->delete_me) break;
                }
           }
@@ -1331,10 +1333,10 @@ _post_up_handle(Evas *eo_e, unsigned int timestamp, const void *data,
                   _evas_event_havemap_adjust(eo_obj_itr, obj_itr,
                                              &ev_in.canvas.x, &ev_in.canvas.y,
                                              obj_itr->mouse_grabbed);
-                  EV_CALL(eo_obj_itr, obj_itr, EVAS_CALLBACK_MOUSE_IN, &ev_in, event_id, pe);
+                  EV_CALL(eo_obj_itr, obj_itr, EVAS_CALLBACK_MOUSE_IN, &ev_in, event_id, pe, parent_pe);
                   if ((obj_itr->proxy->is_proxy) &&
                       (obj_itr->proxy->src_events))
-                    _evas_event_source_mouse_in_events(eo_obj_itr, eo_e, &ev_in, event_id, pedata);
+                    _evas_event_source_mouse_in_events(eo_obj_itr, eo_e, &ev_in, event_id, pe);
                   if (e->delete_me) break;
                }
           }
@@ -1359,7 +1361,7 @@ _post_up_handle(Evas *eo_e, unsigned int timestamp, const void *data,
         eina_list_free(ins);
      }
    if (e->pointer.inside)
-     _canvas_event_feed_mouse_move_internal(eo_e, e, e->pointer.x, e->pointer.y, timestamp, data, pedata);
+     _canvas_event_feed_mouse_move_internal(eo_e, e, e->pointer.x, e->pointer.y, timestamp, data, pe);
    if (ev.dev) eo_unref(ev.dev);
    EV_DEL(pe);
 
@@ -1369,10 +1371,9 @@ _post_up_handle(Evas *eo_e, unsigned int timestamp, const void *data,
 static void
 _canvas_event_feed_mouse_up_internal(Eo *eo_e, int b, Evas_Button_Flags flags,
                                      unsigned int timestamp, const void *data,
-                                     Efl_Event_Pointer_Data *parent_pe)
+                                     Efl_Event_Pointer *parent_pe)
 {
    Evas_Public_Data *e = eo_data_scope_get(eo_e, EVAS_CANVAS_CLASS);
-   Efl_Event_Pointer_Data *pedata = NULL;
    Efl_Event_Pointer *pe = NULL;
    Eina_List *l, *copy;
 
@@ -1432,9 +1433,9 @@ _canvas_event_feed_mouse_up_internal(Eo *eo_e, int b, Evas_Button_Flags flags,
                        _evas_event_havemap_adjust(eo_obj, obj, &ev.canvas.x,
                                                   &ev.canvas.y,
                                                   obj->mouse_grabbed);
-                       EV_CALL(eo_obj, obj, EVAS_CALLBACK_MOUSE_UP, &ev, event_id, pe);
+                       EV_CALL(eo_obj, obj, EVAS_CALLBACK_MOUSE_UP, &ev, event_id, pe, parent_pe);
                        if ((obj->proxy->is_proxy) && (obj->proxy->src_events))
-                         _evas_event_source_mouse_up_events(eo_obj, eo_e, &ev, event_id, pedata);
+                         _evas_event_source_mouse_up_events(eo_obj, eo_e, &ev, event_id, pe);
                        if (e->delete_me) break;
                     }
                }
@@ -1475,7 +1476,7 @@ evas_event_feed_mouse_up(Eo *eo_e, int b, Evas_Button_Flags flags, unsigned int
 
 static void
 _canvas_event_feed_mouse_cancel_internal(Eo *eo_e, unsigned int timestamp, const void *data,
-                                         Efl_Event_Pointer_Data *parent_pe)
+                                         Efl_Event_Pointer *parent_pe)
 {
    Evas_Public_Data *e = eo_data_scope_get(eo_e, EVAS_CANVAS_CLASS);
    Evas_Coord_Touch_Point *point;
@@ -1515,10 +1516,9 @@ evas_event_feed_mouse_cancel(Eo *eo_e, unsigned int timestamp, const void *data)
 static void
 _canvas_event_feed_mouse_wheel_internal(Eo *eo_e, int direction, int z,
                                         unsigned int timestamp, const void *data,
-                                        Efl_Event_Pointer_Data *parent_pe)
+                                        Efl_Event_Pointer *parent_pe)
 {
    Evas_Public_Data *e = eo_data_scope_get(eo_e, EVAS_CANVAS_CLASS);
-   Efl_Event_Pointer_Data *pedata = NULL;
    Efl_Event_Pointer *pe = NULL;
    Eina_List *l, *copy;
    Evas_Event_Mouse_Wheel ev;
@@ -1557,9 +1557,9 @@ _canvas_event_feed_mouse_wheel_internal(Eo *eo_e, int direction, int z,
              ev.canvas.y = e->pointer.y;
              _evas_event_havemap_adjust(eo_obj, obj, &ev.canvas.x, &ev.canvas.y,
                                         obj->mouse_grabbed);
-             EV_CALL(eo_obj, obj, EVAS_CALLBACK_MOUSE_WHEEL, &ev, event_id, pe);
+             EV_CALL(eo_obj, obj, EVAS_CALLBACK_MOUSE_WHEEL, &ev, event_id, pe, parent_pe);
              if ((obj->proxy->is_proxy) && (obj->proxy->src_events))
-               _evas_event_source_wheel_events(eo_obj, eo_e, &ev, event_id, pedata);
+               _evas_event_source_wheel_events(eo_obj, eo_e, &ev, event_id, pe);
              if (e->delete_me || e->is_frozen) break;
           }
      }
@@ -1580,10 +1580,9 @@ evas_event_feed_mouse_wheel(Eo *eo_e, int direction, int z, unsigned int timesta
 static void
 _canvas_event_feed_mouse_move_internal(Eo *eo_e, Evas_Public_Data *e, int x, int y,
                                        unsigned int timestamp, const void *data,
-                                       Efl_Event_Pointer_Data *parent_pe)
+                                       Efl_Event_Pointer *parent_pe)
 {
    Evas_Object *nogrep_obj = NULL;
-   Efl_Event_Pointer_Data *pemovedata = NULL, *peoutdata = NULL, *peindata = NULL;
    Efl_Event_Pointer *pemove = NULL, *peout = NULL, *pein = NULL;
    int px, py;
 
@@ -1653,9 +1652,9 @@ _canvas_event_feed_mouse_move_internal(Eo *eo_e, Evas_Public_Data *e, int x, int
 
                        if ((px != x) || (py != y))
                          {
-                            EV_CALL(eo_obj, obj, EVAS_CALLBACK_MOUSE_MOVE, &ev, event_id, pemove);
+                            EV_CALL(eo_obj, obj, EVAS_CALLBACK_MOUSE_MOVE, &ev, event_id, pemove, parent_pe);
                             if ((obj->proxy->is_proxy) && (obj->proxy->src_events))
-                              _evas_event_source_mouse_move_events(eo_obj, eo_e, &ev, event_id, pemovedata);
+                              _evas_event_source_mouse_move_events(eo_obj, eo_e, &ev, event_id, pemove);
                          }
                     }
                   else
@@ -1712,9 +1711,9 @@ _canvas_event_feed_mouse_move_internal(Eo *eo_e, Evas_Public_Data *e, int x, int
                                                   &ev.canvas.y,
                                                   obj->mouse_grabbed);
                        e->pointer.object.in = eina_list_remove(e->pointer.object.in, eo_obj);
-                       EV_CALL(eo_obj, obj, EVAS_CALLBACK_MOUSE_OUT, &ev, event_id, peout);
+                       EV_CALL(eo_obj, obj, EVAS_CALLBACK_MOUSE_OUT, &ev, event_id, peout, parent_pe);
                        if ((obj->proxy->is_proxy) && (obj->proxy->src_events))
-                         _evas_event_source_mouse_out_events(eo_obj, eo_e, &ev, event_id, peoutdata);
+                         _evas_event_source_mouse_out_events(eo_obj, eo_e, &ev, event_id, peout);
                     }
                }
              _evas_post_event_callback_call(eo_e, e);
@@ -1807,9 +1806,9 @@ _canvas_event_feed_mouse_move_internal(Eo *eo_e, Evas_Public_Data *e, int x, int
                        ev.cur.canvas.x = e->pointer.x;
                        ev.cur.canvas.y = e->pointer.y;
                        _evas_event_havemap_adjust(eo_obj, obj, &ev.cur.canvas.x, &ev.cur.canvas.y, obj->mouse_grabbed);
-                       EV_CALL(eo_obj, obj, EVAS_CALLBACK_MOUSE_MOVE, &ev, event_id, pemove);
+                       EV_CALL(eo_obj, obj, EVAS_CALLBACK_MOUSE_MOVE, &ev, event_id, pemove, parent_pe);
                        if ((obj->proxy->is_proxy) && (obj->proxy->src_events))
-                         _evas_event_source_mouse_move_events(eo_obj, eo_e, &ev, event_id, pemovedata);
+                         _evas_event_source_mouse_move_events(eo_obj, eo_e, &ev, event_id, pemove);
                     }
                }
              /* otherwise it has left the object */
@@ -1824,9 +1823,9 @@ _canvas_event_feed_mouse_move_internal(Eo *eo_e, Evas_Public_Data *e, int x, int
                        _evas_event_havemap_adjust(eo_obj, obj, &ev2.canvas.x,
                                                   &ev2.canvas.y,
                                                   obj->mouse_grabbed);
-                       EV_CALL(eo_obj, obj, EVAS_CALLBACK_MOUSE_OUT, &ev2, event_id, peout);
+                       EV_CALL(eo_obj, obj, EVAS_CALLBACK_MOUSE_OUT, &ev2, event_id, peout, parent_pe);
                        if ((obj->proxy->is_proxy) && (obj->proxy->src_events))
-                         _evas_event_source_mouse_out_events(eo_obj, eo_e, &ev2, event_id, peoutdata);
+                         _evas_event_source_mouse_out_events(eo_obj, eo_e, &ev2, event_id, peout);
                        if (e->delete_me) break;
                     }
                }
@@ -1854,10 +1853,10 @@ _canvas_event_feed_mouse_move_internal(Eo *eo_e, Evas_Public_Data *e, int x, int
                        _evas_event_havemap_adjust(eo_obj, obj, &ev3.canvas.x,
                                                   &ev3.canvas.y,
                                                   obj->mouse_grabbed);
-                       EV_CALL(eo_obj, obj, EVAS_CALLBACK_MOUSE_IN, &ev3, event_id2, pein);
+                       EV_CALL(eo_obj, obj, EVAS_CALLBACK_MOUSE_IN, &ev3, event_id2, pein, parent_pe);
                        if ((obj->proxy->is_proxy) &&
                            (obj->proxy->src_events))
-                         _evas_event_source_mouse_in_events(eo_obj, eo_e, &ev3, event_id2, peindata);
+                         _evas_event_source_mouse_in_events(eo_obj, eo_e, &ev3, event_id2, pein);
                        if (e->delete_me) break;
                     }
                }
@@ -1995,9 +1994,9 @@ nogrep:
                        ev.cur.canvas.x = e->pointer.x;
                        ev.cur.canvas.y = e->pointer.y;
                        _evas_event_havemap_adjust(eo_obj, obj, &ev.cur.canvas.x, &ev.cur.canvas.y, obj->mouse_grabbed);
-                       EV_CALL(eo_obj, obj, EVAS_CALLBACK_MOUSE_MOVE, &ev, event_id, pemove);
+                       EV_CALL(eo_obj, obj, EVAS_CALLBACK_MOUSE_MOVE, &ev, event_id, pemove, parent_pe);
                        if ((obj->proxy->is_proxy) && (obj->proxy->src_events))
-                         _evas_event_source_mouse_move_events(eo_obj, eo_e, &ev, event_id, pemovedata);
+                         _evas_event_source_mouse_move_events(eo_obj, eo_e, &ev, event_id, pemove);
                     }
                }
              /* otherwise it has left the object */
@@ -2010,9 +2009,9 @@ nogrep:
                   ev2.canvas.y = e->pointer.y;
                   _evas_event_havemap_adjust(eo_obj, obj, &ev2.canvas.x,
                                              &ev2.canvas.y, obj->mouse_grabbed);
-                  EV_CALL(eo_obj, obj, EVAS_CALLBACK_MOUSE_OUT, &ev2, event_id, peout);
+                  EV_CALL(eo_obj, obj, EVAS_CALLBACK_MOUSE_OUT, &ev2, event_id, peout, parent_pe);
                   if ((obj->proxy->is_proxy) && (obj->proxy->src_events))
-                    _evas_event_source_mouse_out_events(eo_obj, eo_e, &ev2, event_id, peoutdata);
+                    _evas_event_source_mouse_out_events(eo_obj, eo_e, &ev2, event_id, peout);
                }
              if (e->delete_me) break;
           }
@@ -2037,9 +2036,9 @@ nogrep:
                   ev3.canvas.y = e->pointer.y;
                   _evas_event_havemap_adjust(eo_obj, obj, &ev3.canvas.x,
                                              &ev3.canvas.y, obj->mouse_grabbed);
-                  EV_CALL(eo_obj, obj, EVAS_CALLBACK_MOUSE_IN, &ev3, event_id2, pein);
+                  EV_CALL(eo_obj, obj, EVAS_CALLBACK_MOUSE_IN, &ev3, event_id2, pein, parent_pe);
                   if ((obj->proxy->is_proxy) && (obj->proxy->src_events))
-                    _evas_event_source_mouse_in_events(eo_obj, eo_e, &ev3, event_id2, peindata);
+                    _evas_event_source_mouse_in_events(eo_obj, eo_e, &ev3, event_id2, pein);
                   if (e->delete_me) break;
                }
           }
@@ -2073,10 +2072,9 @@ evas_event_feed_mouse_move(Eo *eo_e, int x, int y, unsigned int timestamp, const
 
 static void
 _canvas_event_feed_mouse_in_internal(Eo *eo_e, unsigned int timestamp, const void *data,
-                                     Efl_Event_Pointer_Data *parent_pe)
+                                     Efl_Event_Pointer *parent_pe)
 {
    Evas_Public_Data *e = eo_data_scope_get(eo_e, EVAS_CANVAS_CLASS);
-   Efl_Event_Pointer_Data *pedata = NULL;
    Efl_Event_Pointer *pe = NULL;
    Eina_List *ins;
    Eina_List *l;
@@ -2121,9 +2119,9 @@ _canvas_event_feed_mouse_in_internal(Eo *eo_e, unsigned int timestamp, const voi
              ev.canvas.y = e->pointer.y;
              _evas_event_havemap_adjust(eo_obj, obj, &ev.canvas.x, &ev.canvas.y,
                                         obj->mouse_grabbed);
-             EV_CALL(eo_obj, obj, EVAS_CALLBACK_MOUSE_IN, &ev, event_id, pe);
+             EV_CALL(eo_obj, obj, EVAS_CALLBACK_MOUSE_IN, &ev, event_id, pe, parent_pe);
              if ((obj->proxy->is_proxy) && (obj->proxy->src_events))
-               _evas_event_source_mouse_in_events(eo_obj, eo_e, &ev, event_id, pedata);
+               _evas_event_source_mouse_in_events(eo_obj, eo_e, &ev, event_id, pe);
              if (e->delete_me || e->is_frozen) break;
           }
      }
@@ -2132,7 +2130,7 @@ _canvas_event_feed_mouse_in_internal(Eo *eo_e, unsigned int timestamp, const voi
    /* and set up the new one */
    e->pointer.object.in = ins;
    _evas_post_event_callback_call(eo_e, e);
-   _canvas_event_feed_mouse_move_internal(eo_e, e, e->pointer.x, e->pointer.y, timestamp, data, pedata);
+   _canvas_event_feed_mouse_move_internal(eo_e, e, e->pointer.x, e->pointer.y, timestamp, data, pe);
    if (ev.dev) eo_unref(ev.dev);
    _evas_unwalk(e);
    EV_DEL(pe);
@@ -2146,10 +2144,9 @@ evas_event_feed_mouse_in(Eo *eo_e, unsigned int timestamp, const void *data)
 
 static void
 _canvas_event_feed_mouse_out_internal(Eo *eo_e, unsigned int timestamp, const void *data,
-                                      Efl_Event_Pointer_Data *parent_pe)
+                                      Efl_Event_Pointer *parent_pe)
 {
    Evas_Public_Data *e = eo_data_scope_get(eo_e, EVAS_CANVAS_CLASS);
-   Efl_Event_Pointer_Data *pedata = NULL;
    Efl_Event_Pointer *pe = NULL;
    Evas_Event_Mouse_Out ev;
    int event_id = 0;
@@ -2193,9 +2190,9 @@ _canvas_event_feed_mouse_out_internal(Eo *eo_e, unsigned int timestamp, const vo
              ev.canvas.y = e->pointer.y;
              _evas_event_havemap_adjust(eo_obj, obj, &ev.canvas.x, &ev.canvas.y,
                                         obj->mouse_grabbed);
-             EV_CALL(eo_obj, obj, EVAS_CALLBACK_MOUSE_OUT, &ev, event_id, pe);
+             EV_CALL(eo_obj, obj, EVAS_CALLBACK_MOUSE_OUT, &ev, event_id, pe, parent_pe);
              if ((obj->proxy->is_proxy) && (obj->proxy->src_events))
-               _evas_event_source_mouse_out_events(eo_obj, eo_e, &ev, event_id, pedata);
+               _evas_event_source_mouse_out_events(eo_obj, eo_e, &ev, event_id, pe);
              if (e->delete_me || e->is_frozen) break;
           }
         obj->mouse_grabbed = 0;
@@ -2224,12 +2221,11 @@ _canvas_event_feed_multi_down_internal(Evas *eo_e, void *_pd,
                            double pres, double ang,
                            double fx, double fy,
                            Evas_Button_Flags flags, unsigned int timestamp,
-                           const void *data, Efl_Event_Pointer_Data *parent_pe)
+                           const void *data, Efl_Event_Pointer *parent_pe)
 {
    Evas_Public_Data *e = _pd;
    Eina_List *l, *copy;
    Evas_Event_Multi_Down ev;
-   Efl_Event_Pointer_Data *pedata = NULL;
    Efl_Event_Pointer *pe = NULL;
    Evas_Object *eo_obj;
    int addgrab = 0;
@@ -2293,9 +2289,9 @@ _canvas_event_feed_multi_down_internal(Evas *eo_e, void *_pd,
           ev.canvas.xsub = ev.canvas.x; // fixme - lost precision
         if (y != ev.canvas.y)
           ev.canvas.ysub = ev.canvas.y; // fixme - lost precision
-        EV_CALL(eo_obj, obj, EVAS_CALLBACK_MULTI_DOWN, &ev, event_id, pe);
+        EV_CALL(eo_obj, obj, EVAS_CALLBACK_MULTI_DOWN, &ev, event_id, pe, parent_pe);
         if ((obj->proxy->is_proxy) || (obj->proxy->src_events))
-          _evas_event_source_multi_down_events(eo_obj, eo_e, &ev, event_id, pedata);
+          _evas_event_source_multi_down_events(eo_obj, eo_e, &ev, event_id, pe);
         if (e->delete_me || e->is_frozen) break;
      }
    eina_list_free(copy);
@@ -2337,9 +2333,8 @@ _canvas_event_feed_multi_up_internal(Evas *eo_e, void *_pd,
                                      Evas_Button_Flags flags,
                                      unsigned int timestamp,
                                      const void *data,
-                                     Efl_Event_Pointer_Data *parent_pe)
+                                     Efl_Event_Pointer *parent_pe)
 {
-   Efl_Event_Pointer_Data *pedata = NULL;
    Efl_Event_Pointer *pe = NULL;
    Evas_Public_Data *e = _pd;
    Eina_List *l, *copy;
@@ -2400,9 +2395,9 @@ _canvas_event_feed_multi_up_internal(Evas *eo_e, void *_pd,
              obj->mouse_grabbed--;
              e->pointer.mouse_grabbed--;
           }
-        EV_CALL(eo_obj, obj, EVAS_CALLBACK_MULTI_UP, &ev, event_id, pe);
+        EV_CALL(eo_obj, obj, EVAS_CALLBACK_MULTI_UP, &ev, event_id, pe, parent_pe);
         if ((obj->proxy->is_proxy) || (obj->proxy->src_events))
-          _evas_event_source_multi_up_events(eo_obj, eo_e, &ev, event_id, pedata);
+          _evas_event_source_multi_up_events(eo_obj, eo_e, &ev, event_id, pe);
         if (e->delete_me || e->is_frozen) break;
      }
    eina_list_free(copy);
@@ -2442,10 +2437,9 @@ _canvas_event_feed_multi_move_internal(Eo *eo_e, void *_pd, int d, int x,
                                        double fx, double fy,
                                        unsigned int timestamp,
                                        const void *data,
-                                       Efl_Event_Pointer_Data *parent_pe)
+                                       Efl_Event_Pointer *parent_pe)
 {
    Evas_Public_Data *e = _pd;
-   Efl_Event_Pointer_Data *pedata = NULL;
    Efl_Event_Pointer *pe = NULL;
 
    if (e->is_frozen) return;
@@ -2509,9 +2503,9 @@ _canvas_event_feed_multi_move_internal(Eo *eo_e, void *_pd, int d, int x,
                     ev.cur.canvas.xsub = ev.cur.canvas.x; // fixme - lost precision
                   if (y != ev.cur.canvas.y)
                     ev.cur.canvas.ysub = ev.cur.canvas.y; // fixme - lost precision
-                  EV_CALL(eo_obj, obj, EVAS_CALLBACK_MULTI_MOVE, &ev, event_id, pe);
+                  EV_CALL(eo_obj, obj, EVAS_CALLBACK_MULTI_MOVE, &ev, event_id, pe, parent_pe);
                   if ((obj->proxy->is_proxy) || (obj->proxy->src_events))
-                    _evas_event_source_multi_move_events(eo_obj, eo_e, &ev, event_id, pedata);
+                    _evas_event_source_multi_move_events(eo_obj, eo_e, &ev, event_id, pe);
 
                   if (e->delete_me || e->is_frozen) break;
                }
@@ -2583,9 +2577,9 @@ _canvas_event_feed_multi_move_internal(Eo *eo_e, void *_pd, int d, int x,
                     ev.cur.canvas.xsub = ev.cur.canvas.x; // fixme - lost precision
                   if (y != ev.cur.canvas.y)
                     ev.cur.canvas.ysub = ev.cur.canvas.y; // fixme - lost precision
-                  EV_CALL(eo_obj, obj, EVAS_CALLBACK_MULTI_MOVE, &ev, event_id, pe);
+                  EV_CALL(eo_obj, obj, EVAS_CALLBACK_MULTI_MOVE, &ev, event_id, pe, parent_pe);
                   if ((obj->proxy->is_proxy) || (obj->proxy->src_events))
-                    _evas_event_source_multi_move_events(eo_obj, eo_e, &ev, event_id, pedata);
+                    _evas_event_source_multi_move_events(eo_obj, eo_e, &ev, event_id, pe);
                }
              if (e->delete_me || e->is_frozen) break;
           }
@@ -2639,6 +2633,7 @@ _canvas_event_feed_key_down_internal(Eo *eo_e,
                                      unsigned int keycode,
                                      Efl_Event_Key_Data *ke)
 {
+   void *eo_event_info = NULL;
    Evas_Public_Data *e = _pd;
    int event_id = 0;
 
@@ -2667,14 +2662,13 @@ _canvas_event_feed_key_down_internal(Eo *eo_e,
    ev.keycode = keycode;
    if (ev.dev) eo_ref(ev.dev);
 
-   ev.reserved = ke ? ke->eo : NULL;
    if (ke)
      {
         ke->device = ev.dev;
         ke->event_flags = ev.event_flags;
         ke->modifiers = ev.modifiers;
         ke->locks = ev.locks;
-        ke->legacy = &ev;
+        eo_event_info = ke->eo;
      }
 
    if (e->grabs)
@@ -2703,9 +2697,8 @@ _canvas_event_feed_key_down_internal(Eo *eo_e,
                        if (!e->is_frozen &&
                            !evas_event_freezes_through(g->object, object_obj))
                          {
-                            evas_object_event_callback_call(g->object,
-                                                            object_obj,
-                                                            EVAS_CALLBACK_KEY_DOWN, &ev, event_id);
+                            EV_CALL(g->object, object_obj, EVAS_CALLBACK_KEY_DOWN,
+                                    &ev, event_id, eo_event_info, NULL);
                          }
                        if (g->exclusive) exclusive = EINA_TRUE;
                     }
@@ -2736,9 +2729,10 @@ _canvas_event_feed_key_down_internal(Eo *eo_e,
      {
         Evas_Object_Protected_Data *focused_obj = eo_data_scope_get(e->focused, EVAS_OBJECT_CLASS);
         if (!e->is_frozen && !evas_event_freezes_through(e->focused, focused_obj))
-             evas_object_event_callback_call(e->focused, focused_obj,
-                                             EVAS_CALLBACK_KEY_DOWN,
-                                             &ev, event_id);
+          {
+             EV_CALL(e->focused, focused_obj, EVAS_CALLBACK_KEY_DOWN,
+                     &ev, event_id, eo_event_info, NULL);
+          }
      }
    _evas_post_event_callback_call(eo_e, e);
    if (ev.dev) eo_unref(ev.dev);
@@ -2750,7 +2744,6 @@ _canvas_event_feed_key_down_internal(Eo *eo_e,
         ke->event_flags = 0;
         ke->modifiers = NULL;
         ke->locks = NULL;
-        ke->legacy = NULL;
      }
 }
 
@@ -2766,6 +2759,7 @@ _canvas_event_feed_key_up_internal(Eo *eo_e,
                                    unsigned int keycode,
                                    Efl_Event_Key_Data *ke)
 {
+   void *eo_event_info = NULL;
    Evas_Public_Data *e = _pd;
    int event_id = 0;
    if (!keyname) return;
@@ -2793,14 +2787,13 @@ _canvas_event_feed_key_up_internal(Eo *eo_e,
    ev.keycode = keycode;
    if (ev.dev) eo_ref(ev.dev);
 
-   ev.reserved = ke ? ke->eo : NULL;
    if (ke)
      {
         ke->device = ev.dev;
         ke->event_flags = ev.event_flags;
         ke->modifiers = ev.modifiers;
         ke->locks = ev.locks;
-        ke->legacy = &ev;
+        eo_event_info = ke->eo;
      }
 
    if (e->grabs)
@@ -2828,9 +2821,9 @@ _canvas_event_feed_key_up_internal(Eo *eo_e,
                   if (!e->is_frozen &&
                         !evas_event_freezes_through(g->object, object_obj))
                     {
-                       evas_object_event_callback_call(g->object, object_obj,
-                                                       EVAS_CALLBACK_KEY_UP,
-                                                       &ev, event_id);
+                       evas_object_event_callback_call
+                             (g->object, object_obj, EVAS_CALLBACK_KEY_UP,
+                              &ev, event_id, EFL_EVENT_KEY_UP, eo_event_info);
                     }
                   if (g->exclusive) exclusive = EINA_TRUE;
                }
@@ -2862,9 +2855,11 @@ _canvas_event_feed_key_up_internal(Eo *eo_e,
      {
         Evas_Object_Protected_Data *focused_obj = eo_data_scope_get(e->focused, EVAS_OBJECT_CLASS);
         if (!e->is_frozen && !evas_event_freezes_through(e->focused, focused_obj))
-             evas_object_event_callback_call(e->focused, focused_obj,
-                                             EVAS_CALLBACK_KEY_UP,
-                                             &ev, event_id);
+          {
+             evas_object_event_callback_call
+                   (e->focused, focused_obj, EVAS_CALLBACK_KEY_UP,
+                    &ev, event_id, EFL_EVENT_KEY_UP, eo_event_info);
+          }
      }
    _evas_post_event_callback_call(eo_e, e);
    if (ev.dev) eo_unref(ev.dev);
@@ -2876,7 +2871,6 @@ _canvas_event_feed_key_up_internal(Eo *eo_e,
         ke->event_flags = 0;
         ke->modifiers = NULL;
         ke->locks = NULL;
-        ke->legacy = NULL;
      }
 }
 
@@ -2942,7 +2936,7 @@ evas_event_feed_hold(Eo *eo_e, int hold, unsigned int timestamp, const void *dat
         if ( !evas_event_freezes_through(eo_obj, obj))
           {
              evas_object_event_callback_call(eo_obj, obj, EVAS_CALLBACK_HOLD,
-                                             &ev, event_id);
+                                             &ev, event_id, NULL, NULL);
              if ((obj->proxy->is_proxy) && (obj->proxy->src_events))
                _evas_event_source_hold_events(eo_obj, eo_e, &ev, event_id);
           }
@@ -2988,7 +2982,7 @@ _canvas_event_feed_axis_update_internal(Evas *eo_e, Evas_Public_Data *e, unsigne
           {
              evas_object_event_callback_call(eo_obj, obj,
                                              EVAS_CALLBACK_AXIS_UPDATE, &ev,
-                                             event_id);
+                                             event_id, NULL, NULL);
              if (e->delete_me || e->is_frozen) break;
           }
      }
@@ -3270,7 +3264,7 @@ _evas_canvas_event_pointer_cb(void *data, const Eo_Event *event)
         if (ev->finger == 0)
           {
              _canvas_event_feed_mouse_move_internal(eo_e, e, ev->cur.x, ev->cur.y,
-                                                    ev->timestamp, ev->data, ev);
+                                                    ev->timestamp, ev->data, ev->eo);
           }
         else
           {
@@ -3278,14 +3272,14 @@ _evas_canvas_event_pointer_cb(void *data, const Eo_Event *event)
                                                     ev->radius, ev->radius_x, ev->radius_y,
                                                     ev->pressure, ev->angle,
                                                     ev->cur.x, ev->cur.y,
-                                                    ev->timestamp, ev->data, ev);
+                                                    ev->timestamp, ev->data, ev->eo);
           }
         break;
 
       case EFL_POINTER_ACTION_DOWN:
         if (ev->finger == 0)
           {
-             _canvas_event_feed_mouse_down_internal(eo_e, ev->button, ev->button_flags, ev->timestamp, ev->data, ev);
+             _canvas_event_feed_mouse_down_internal(eo_e, ev->button, ev->button_flags, ev->timestamp, ev->data, ev->eo);
           }
         else
           {
@@ -3293,14 +3287,14 @@ _evas_canvas_event_pointer_cb(void *data, const Eo_Event *event)
                                                     ev->radius, ev->radius_x, ev->radius_y,
                                                     ev->pressure, ev->angle,
                                                     ev->cur.x, ev->cur.y, ev->button_flags,
-                                                    ev->timestamp, ev->data, ev);
+                                                    ev->timestamp, ev->data, ev->eo);
           }
         break;
 
       case EFL_POINTER_ACTION_UP:
         if (ev->finger == 0)
           {
-             _canvas_event_feed_mouse_up_internal(eo_e, ev->button, ev->button_flags, ev->timestamp, ev->data, ev);
+             _canvas_event_feed_mouse_up_internal(eo_e, ev->button, ev->button_flags, ev->timestamp, ev->data, ev->eo);
           }
         else
           {
@@ -3308,25 +3302,25 @@ _evas_canvas_event_pointer_cb(void *data, const Eo_Event *event)
                                                   ev->radius, ev->radius_x, ev->radius_y,
                                                   ev->pressure, ev->angle,
                                                   ev->cur.x, ev->cur.y, ev->button_flags,
-                                                  ev->timestamp, ev->data, ev);
+                                                  ev->timestamp, ev->data, ev->eo);
           }
         break;
 
       case EFL_POINTER_ACTION_CANCEL:
-        _canvas_event_feed_mouse_cancel_internal(eo_e, ev->timestamp, ev->data, ev);
+        _canvas_event_feed_mouse_cancel_internal(eo_e, ev->timestamp, ev->data, ev->eo);
         break;
 
       case EFL_POINTER_ACTION_IN:
-        _canvas_event_feed_mouse_in_internal(eo_e, ev->timestamp, ev->data, ev);
+        _canvas_event_feed_mouse_in_internal(eo_e, ev->timestamp, ev->data, ev->eo);
         break;
 
       case EFL_POINTER_ACTION_OUT:
-        _canvas_event_feed_mouse_out_internal(eo_e, ev->timestamp, ev->data, ev);
+        _canvas_event_feed_mouse_out_internal(eo_e, ev->timestamp, ev->data, ev->eo);
         break;
 
       case EFL_POINTER_ACTION_WHEEL:
         dir = (ev->wheel.dir == EFL_ORIENT_HORIZONTAL) ? 1 : 0;
-        _canvas_event_feed_mouse_wheel_internal(eo_e, dir, ev->wheel.z, ev->timestamp, ev->data, ev);
+        _canvas_event_feed_mouse_wheel_internal(eo_e, dir, ev->wheel.z, ev->timestamp, ev->data, ev->eo);
         break;
 
       default:
@@ -3363,7 +3357,7 @@ _evas_canvas_event_key_cb(void *data, const Eo_Event *event)
                                            ev->keycode, ev);
      }
 
-   ev->evas_done = EINA_FALSE;
+   ev->evas_done = EINA_TRUE;
    return EO_CALLBACK_CONTINUE;
 }
 
index 9dd0c3d..d11eb3b 100644 (file)
@@ -5,7 +5,7 @@
 #include "interfaces/efl_common_internal.h"
 
 Eina_Bool
-efl_event_pointer_legacy_info_set(Efl_Event_Pointer *evt, const void *event_info, Evas_Callback_Type type)
+efl_event_pointer_legacy_info_set(Efl_Event_Pointer *evt, void *event_info, Evas_Callback_Type type)
 {
    Efl_Event_Pointer_Data *ev = eo_data_scope_get(evt, EFL_EVENT_POINTER_CLASS);
    if (!ev || !event_info) return EINA_FALSE;
@@ -209,240 +209,54 @@ efl_event_pointer_legacy_info_set(Efl_Event_Pointer *evt, const void *event_info
    return EINA_TRUE;
 }
 
-const void *
-efl_event_pointer_legacy_info_get(const Efl_Event_Pointer *evt, Evas_Callback_Type *ptype, Eina_Bool multi)
+Eina_Bool
+efl_event_key_legacy_info_set(Efl_Event_Key *evt, void *event_info, Evas_Callback_Type type)
 {
-   Efl_Event_Pointer_Data *ev = eo_data_scope_get(evt, EFL_EVENT_POINTER_CLASS);
-   if (!ev) return NULL;
+   Efl_Event_Key_Data *ev = eo_data_scope_get(evt, EFL_EVENT_KEY_CLASS);
+   if (!ev || !event_info) return EINA_FALSE;
 
-   switch (ev->action)
+   switch (type)
      {
-      case EFL_POINTER_ACTION_IN:
+      case EVAS_CALLBACK_KEY_DOWN:
         {
-           Evas_Event_Mouse_In *e = calloc(1, sizeof(*e));
-           if (ptype) *ptype = EVAS_CALLBACK_MOUSE_IN;
-           ev->legacy = e;
-           e->reserved = ev->eo;
-
-           e->buttons = ev->pressed_buttons;
-           e->canvas.x = ev->cur.x;
-           e->canvas.y = ev->cur.y;
-           e->output.x = ev->cur.x;
-           e->output.y = ev->cur.y;
-           e->data = ev->data;
-           e->timestamp = ev->timestamp;
-           e->event_flags = ev->event_flags;
-           e->dev = ev->device;
-           e->event_src = ev->source;
-           e->modifiers = ev->modifiers;
-           e->locks = ev->locks;
+           const Evas_Event_Key_Down *e = event_info;
+           ev->timestamp = e->timestamp;
+           ev->pressed = EINA_TRUE;
+           eina_stringshare_replace(&ev->keyname, e->keyname);
+           eina_stringshare_replace(&ev->key, e->key);
+           eina_stringshare_replace(&ev->string, e->string);
+           eina_stringshare_replace(&ev->compose, e->compose);
+           ev->keycode = e->keycode;
+           ev->data = e->data;
+           ev->modifiers = e->modifiers;
+           ev->locks = e->locks;
+           ev->event_flags = e->event_flags;
+           ev->device = e->dev;
+           break;
         }
-        break;
 
-      case EFL_POINTER_ACTION_OUT:
+      case EVAS_CALLBACK_KEY_UP:
         {
-           Evas_Event_Mouse_Out *e = calloc(1, sizeof(*e));
-           if (ptype) *ptype = EVAS_CALLBACK_MOUSE_OUT;
-           ev->legacy = e;
-           e->reserved = ev->eo;
-
-           e->buttons = ev->pressed_buttons;
-           e->canvas.x = ev->cur.x;
-           e->canvas.y = ev->cur.y;
-           e->output.x = ev->cur.x;
-           e->output.y = ev->cur.y;
-           e->data = ev->data;
-           e->timestamp = ev->timestamp;
-           e->event_flags = ev->event_flags;
-           e->dev = ev->device;
-           e->event_src = ev->source;
-           e->modifiers = ev->modifiers;
-           e->locks = ev->locks;
-        }
-        break;
-
-      case EFL_POINTER_ACTION_DOWN:
-        if (!ev->finger || !multi)
-          {
-             Evas_Event_Mouse_Down *e = calloc(1, sizeof(*e));
-             if (ptype) *ptype = EVAS_CALLBACK_MOUSE_DOWN;
-             ev->legacy = e;
-             e->reserved = ev->eo;
-
-             e->button = ev->button;
-             e->canvas.x = ev->cur.x;
-             e->canvas.y = ev->cur.y;
-             e->output.x = ev->cur.x;
-             e->output.y = ev->cur.y;
-             e->data = ev->data;
-             e->flags = ev->button_flags;
-             e->timestamp = ev->timestamp;
-             e->event_flags = ev->event_flags;
-             e->dev = ev->device;
-             e->event_src = ev->source;
-             e->modifiers = ev->modifiers;
-             e->locks = ev->locks;
-          }
-        else
-          {
-             Evas_Event_Multi_Down *e = calloc(1, sizeof(*e));
-             if (ptype) *ptype = EVAS_CALLBACK_MULTI_DOWN;
-             ev->legacy = e;
-             e->reserved = ev->eo;
-
-             e->device = ev->finger;
-             e->radius = ev->radius;
-             e->radius_x = ev->radius_x;
-             e->radius_y = ev->radius_y;
-             e->pressure = ev->pressure;
-             e->angle = ev->angle;
-             e->canvas.x = ev->cur.x;
-             e->canvas.y = ev->cur.y;
-             e->canvas.xsub = ev->cur.x;
-             e->canvas.ysub = ev->cur.y;
-             e->output.x = ev->cur.x;
-             e->output.y = ev->cur.y;
-             e->data = ev->data;
-             e->flags = ev->button_flags;
-             e->timestamp = ev->timestamp;
-             e->event_flags = ev->event_flags;
-             e->dev = ev->device;
-             e->modifiers = ev->modifiers;
-             e->locks = ev->locks;
-          }
-        break;
-
-      case EFL_POINTER_ACTION_UP:
-        if (!ev->finger || !multi)
-          {
-             Evas_Event_Mouse_Up *e = calloc(1, sizeof(*e));
-             if (ptype) *ptype = EVAS_CALLBACK_MOUSE_UP;
-             ev->legacy = e;
-             e->reserved = ev->eo;
-
-             e->button = ev->button;
-             e->canvas.x = ev->cur.x;
-             e->canvas.y = ev->cur.y;
-             e->output.x = ev->cur.x;
-             e->output.y = ev->cur.y;
-             e->data = ev->data;
-             e->flags = ev->button_flags;
-             e->timestamp = ev->timestamp;
-             e->event_flags = ev->event_flags;
-             e->dev = ev->device;
-             e->event_src = ev->source;
-             e->modifiers = ev->modifiers;
-             e->locks = ev->locks;
-          }
-        else
-          {
-             Evas_Event_Multi_Down *e = calloc(1, sizeof(*e));
-             if (ptype) *ptype = EVAS_CALLBACK_MULTI_UP;
-             ev->legacy = e;
-             e->reserved = ev->eo;
-
-             e->device = ev->finger;
-             e->radius = ev->radius;
-             e->radius_x = ev->radius_x;
-             e->radius_y = ev->radius_y;
-             e->pressure = ev->pressure;
-             e->angle = ev->angle;
-             e->canvas.x = ev->cur.x;
-             e->canvas.y = ev->cur.y;
-             e->canvas.xsub = ev->cur.x;
-             e->canvas.ysub = ev->cur.y;
-             e->output.x = ev->cur.x;
-             e->output.y = ev->cur.y;
-             e->data = ev->data;
-             e->flags = ev->button_flags;
-             e->timestamp = ev->timestamp;
-             e->event_flags = ev->event_flags;
-             e->dev = ev->device;
-             e->modifiers = ev->modifiers;
-             e->locks = ev->locks;
-             break;
-          }
-        break;
-
-      case EFL_POINTER_ACTION_MOVE:
-        if (!ev->finger || !multi)
-          {
-             Evas_Event_Mouse_Move *e = calloc(1, sizeof(*e));
-             if (ptype) *ptype = EVAS_CALLBACK_MOUSE_MOVE;
-             ev->legacy = e;
-             e->reserved = ev->eo;
-
-             e->buttons = ev->pressed_buttons;
-             e->cur.canvas.x = ev->cur.x;
-             e->cur.canvas.y = ev->cur.y;
-             e->cur.output.x = ev->cur.x;
-             e->cur.output.y = ev->cur.y;
-             e->prev.canvas.x = ev->prev.x;
-             e->prev.canvas.y = ev->prev.y;
-             e->prev.output.x = ev->prev.x;
-             e->prev.output.y = ev->prev.y;
-             e->data = ev->data;
-             e->timestamp = ev->timestamp;
-             e->event_flags = ev->event_flags;
-             e->dev = ev->device;
-             e->event_src = ev->source;
-             e->modifiers = ev->modifiers;
-             e->locks = ev->locks;
-          }
-        else
-          {
-             Evas_Event_Multi_Move *e = calloc(1, sizeof(*e));
-             if (ptype) *ptype = EVAS_CALLBACK_MULTI_MOVE;
-             ev->legacy = e;
-             e->reserved = ev->eo;
-
-             e->device = ev->finger;
-             e->radius = ev->radius;
-             e->radius_x = ev->radius_x;
-             e->radius_y = ev->radius_y;
-             e->pressure = ev->pressure;
-             e->angle = ev->angle;
-             e->cur.canvas.x = ev->cur.x;
-             e->cur.canvas.y = ev->cur.y;
-             e->cur.canvas.xsub = ev->cur.x;
-             e->cur.canvas.ysub = ev->cur.y;
-             e->cur.output.x = ev->cur.x;
-             e->cur.output.y = ev->cur.y;
-             e->data = ev->data;
-             e->timestamp = ev->timestamp;
-             e->event_flags = ev->event_flags;
-             e->dev = ev->device;
-             e->modifiers = ev->modifiers;
-             e->locks = ev->locks;
-          }
-        break;
-
-      case EFL_POINTER_ACTION_WHEEL:
-        {
-           Evas_Event_Mouse_Wheel *e = calloc(1, sizeof(*e));
-           if (ptype) *ptype = EVAS_CALLBACK_MOUSE_WHEEL;
-           ev->legacy = e;
-           e->reserved = ev->eo;
-
-           e->direction = (ev->wheel.dir == EFL_ORIENT_VERTICAL);
-           e->z = ev->wheel.z;
-           e->canvas.x = ev->cur.x;
-           e->canvas.y = ev->cur.y;
-           e->output.x = ev->cur.x;
-           e->output.y = ev->cur.y;
-           e->data = ev->data;
-           e->timestamp = ev->timestamp;
-           e->event_flags = ev->event_flags;
-           e->dev = ev->device;
-           e->modifiers = ev->modifiers;
-           e->locks = ev->locks;
+           const Evas_Event_Key_Up *e = event_info;
+           ev->timestamp = e->timestamp;
+           ev->pressed = EINA_FALSE;
+           eina_stringshare_replace(&ev->keyname, e->keyname);
+           eina_stringshare_replace(&ev->key, e->key);
+           eina_stringshare_replace(&ev->string, e->string);
+           eina_stringshare_replace(&ev->compose, e->compose);
+           ev->keycode = e->keycode;
+           ev->data = e->data;
+           ev->modifiers = e->modifiers;
+           ev->locks = e->locks;
+           ev->event_flags = e->event_flags;
+           ev->device = e->dev;
            break;
         }
 
       default:
-        ERR("invalid event type %d", ev->action);
-        return NULL;
+        ERR("invalid event type %d", type);
+        return EINA_FALSE;
      }
 
-   return ev->legacy;
+   return EINA_TRUE;
 }
index daa76ae..f9344e1 100644 (file)
@@ -29,7 +29,7 @@ _evas_object_focus_set(Eo *eo_obj, Evas_Object_Protected_Data *obj, Eina_Bool fo
         if (obj->layer->evas->focused) goto end;
         obj->focused = 1;
         obj->layer->evas->focused = eo_obj;
-        evas_object_event_callback_call(eo_obj, obj, EVAS_CALLBACK_FOCUS_IN, NULL, event_id);
+        evas_object_event_callback_call(eo_obj, obj, EVAS_CALLBACK_FOCUS_IN, NULL, event_id, NULL, NULL);
         evas_event_callback_call(obj->layer->evas->evas,
                                  EVAS_CALLBACK_CANVAS_OBJECT_FOCUS_IN, eo_obj);
      }
@@ -37,7 +37,7 @@ _evas_object_focus_set(Eo *eo_obj, Evas_Object_Protected_Data *obj, Eina_Bool fo
      {
         obj->focused = 0;
         obj->layer->evas->focused = NULL;
-        evas_object_event_callback_call(eo_obj, obj, EVAS_CALLBACK_FOCUS_OUT, NULL, event_id);
+        evas_object_event_callback_call(eo_obj, obj, EVAS_CALLBACK_FOCUS_OUT, NULL, event_id, NULL, NULL);
         evas_event_callback_call(obj->layer->evas->evas,
                                  EVAS_CALLBACK_CANVAS_OBJECT_FOCUS_OUT, eo_obj);
      }
index d6689a3..7a0da25 100644 (file)
@@ -9,7 +9,7 @@ evas_object_inform_call_show(Evas_Object *eo_obj)
    Evas_Object_Protected_Data *obj = eo_data_scope_get(eo_obj, EVAS_OBJECT_CLASS);
    _evas_object_event_new();
 
-   evas_object_event_callback_call(eo_obj, obj, EVAS_CALLBACK_SHOW, NULL, _evas_event_counter);
+   evas_object_event_callback_call(eo_obj, obj, EVAS_CALLBACK_SHOW, NULL, _evas_event_counter, NULL, NULL);
    _evas_post_event_callback_call(obj->layer->evas->evas, obj->layer->evas);
 }
 
@@ -19,7 +19,7 @@ evas_object_inform_call_hide(Evas_Object *eo_obj)
    Evas_Object_Protected_Data *obj = eo_data_scope_get(eo_obj, EVAS_OBJECT_CLASS);
    _evas_object_event_new();
 
-   evas_object_event_callback_call(eo_obj, obj, EVAS_CALLBACK_HIDE, NULL, _evas_event_counter);
+   evas_object_event_callback_call(eo_obj, obj, EVAS_CALLBACK_HIDE, NULL, _evas_event_counter, NULL, NULL);
    _evas_post_event_callback_call(obj->layer->evas->evas, obj->layer->evas);
 }
 
@@ -28,7 +28,7 @@ evas_object_inform_call_move(Evas_Object *eo_obj, Evas_Object_Protected_Data *ob
 {
    _evas_object_event_new();
 
-   evas_object_event_callback_call(eo_obj, obj, EVAS_CALLBACK_MOVE, NULL, _evas_event_counter);
+   evas_object_event_callback_call(eo_obj, obj, EVAS_CALLBACK_MOVE, NULL, _evas_event_counter, NULL, NULL);
    _evas_post_event_callback_call(obj->layer->evas->evas, obj->layer->evas);
 }
 
@@ -38,7 +38,7 @@ evas_object_inform_call_resize(Evas_Object *eo_obj)
    Evas_Object_Protected_Data *obj = eo_data_scope_get(eo_obj, EVAS_OBJECT_CLASS);
    _evas_object_event_new();
 
-   evas_object_event_callback_call(eo_obj, obj, EVAS_CALLBACK_RESIZE, NULL, _evas_event_counter);
+   evas_object_event_callback_call(eo_obj, obj, EVAS_CALLBACK_RESIZE, NULL, _evas_event_counter, NULL, NULL);
    _evas_post_event_callback_call(obj->layer->evas->evas, obj->layer->evas);
 }
 
@@ -48,7 +48,7 @@ evas_object_inform_call_restack(Evas_Object *eo_obj)
    Evas_Object_Protected_Data *obj = eo_data_scope_get(eo_obj, EVAS_OBJECT_CLASS);
    _evas_object_event_new();
 
-   evas_object_event_callback_call(eo_obj, obj, EVAS_CALLBACK_RESTACK, NULL, _evas_event_counter);
+   evas_object_event_callback_call(eo_obj, obj, EVAS_CALLBACK_RESTACK, NULL, _evas_event_counter, NULL, NULL);
    _evas_post_event_callback_call(obj->layer->evas->evas, obj->layer->evas);
 }
 
@@ -58,7 +58,7 @@ evas_object_inform_call_changed_size_hints(Evas_Object *eo_obj)
    Evas_Object_Protected_Data *obj = eo_data_scope_get(eo_obj, EVAS_OBJECT_CLASS);
    _evas_object_event_new();
 
-   evas_object_event_callback_call(eo_obj, obj, EVAS_CALLBACK_CHANGED_SIZE_HINTS, NULL, _evas_event_counter);
+   evas_object_event_callback_call(eo_obj, obj, EVAS_CALLBACK_CHANGED_SIZE_HINTS, NULL, _evas_event_counter, NULL, NULL);
    _evas_post_event_callback_call(obj->layer->evas->evas, obj->layer->evas);
 }
 
@@ -73,7 +73,7 @@ evas_object_inform_call_image_preloaded(Evas_Object *eo_obj)
    _evas_object_image_preloading_set(eo_obj, 0);
    _evas_object_event_new();
 
-   evas_object_event_callback_call(eo_obj, obj, EVAS_CALLBACK_IMAGE_PRELOADED, NULL, _evas_event_counter);
+   evas_object_event_callback_call(eo_obj, obj, EVAS_CALLBACK_IMAGE_PRELOADED, NULL, _evas_event_counter, NULL, NULL);
    _evas_post_event_callback_call(obj->layer->evas->evas, obj->layer->evas);
 }
 
@@ -83,7 +83,7 @@ evas_object_inform_call_image_unloaded(Evas_Object *eo_obj)
    Evas_Object_Protected_Data *obj = eo_data_scope_get(eo_obj, EVAS_OBJECT_CLASS);
    _evas_object_event_new();
 
-   evas_object_event_callback_call(eo_obj, obj, EVAS_CALLBACK_IMAGE_UNLOADED, NULL, _evas_event_counter);
+   evas_object_event_callback_call(eo_obj, obj, EVAS_CALLBACK_IMAGE_UNLOADED, NULL, _evas_event_counter, NULL, NULL);
    _evas_post_event_callback_call(obj->layer->evas->evas, obj->layer->evas);
 }
 
@@ -92,6 +92,6 @@ evas_object_inform_call_image_resize(Evas_Object *eo_obj)
 {
    Evas_Object_Protected_Data *obj = eo_data_scope_get(eo_obj, EVAS_OBJECT_CLASS);
    _evas_object_event_new();
-   evas_object_event_callback_call(eo_obj, obj, EVAS_CALLBACK_IMAGE_RESIZE, NULL, _evas_event_counter);
+   evas_object_event_callback_call(eo_obj, obj, EVAS_CALLBACK_IMAGE_RESIZE, NULL, _evas_event_counter, NULL, NULL);
    _evas_post_event_callback_call(obj->layer->evas->evas, obj->layer->evas);
 }
index e3ac031..7e2950a 100644 (file)
@@ -755,12 +755,12 @@ _evas_object_eo_base_destructor(Eo *eo_obj, Evas_Object_Protected_Data *obj)
         if ((obj->layer) && (obj->layer->evas))
           obj->layer->evas->focused = NULL;
         _evas_object_event_new();
-        evas_object_event_callback_call(eo_obj, obj, EVAS_CALLBACK_FOCUS_OUT, NULL, _evas_event_counter);
+        evas_object_event_callback_call(eo_obj, obj, EVAS_CALLBACK_FOCUS_OUT, NULL, _evas_event_counter, NULL, NULL);
         if ((obj->layer) && (obj->layer->evas))
           _evas_post_event_callback_call(obj->layer->evas->evas, obj->layer->evas);
      }
    _evas_object_event_new();
-   evas_object_event_callback_call(eo_obj, obj, EVAS_CALLBACK_DEL, NULL, _evas_event_counter);
+   evas_object_event_callback_call(eo_obj, obj, EVAS_CALLBACK_DEL, NULL, _evas_event_counter, NULL, NULL);
    if ((obj->layer) && (obj->layer->evas))
      _evas_post_event_callback_call(obj->layer->evas->evas, obj->layer->evas);
    if ((obj->mouse_grabbed > 0) && (obj->layer) && (obj->layer->evas))
@@ -819,7 +819,7 @@ _evas_object_eo_base_destructor(Eo *eo_obj, Evas_Object_Protected_Data *obj)
    evas_object_map_set(eo_obj, NULL);
    if (obj->is_smart) evas_object_smart_del(eo_obj);
    _evas_object_event_new();
-   evas_object_event_callback_call(eo_obj, obj, EVAS_CALLBACK_FREE, NULL, _evas_event_counter);
+   evas_object_event_callback_call(eo_obj, obj, EVAS_CALLBACK_FREE, NULL, _evas_event_counter, NULL, NULL);
    if ((obj->layer) && (obj->layer->evas))
      _evas_post_event_callback_call(obj->layer->evas->evas, obj->layer->evas);
    evas_object_smart_cleanup(eo_obj);
index abeb6c0..9fc022d 100644 (file)
@@ -1536,7 +1536,7 @@ void evas_object_clip_across_check(Evas_Object *obj, Evas_Object_Protected_Data
 void evas_object_clip_across_clippees_check(Evas_Object *obj, Evas_Object_Protected_Data *pd);
 void evas_object_mapped_clip_across_mark(Evas_Object *obj, Evas_Object_Protected_Data *pd);
 void evas_event_callback_call(Evas *e, Evas_Callback_Type type, void *event_info);
-void evas_object_event_callback_call(Evas_Object *obj, Evas_Object_Protected_Data *pd, Evas_Callback_Type type, void *event_info, int event_id);
+void evas_object_event_callback_call(Evas_Object *obj, Evas_Object_Protected_Data *pd, Evas_Callback_Type type, void *event_info, int event_id, const Eo_Event_Description *eo_event_desc, Efl_Event *eo_event_info);
 Eina_List *evas_event_objects_event_list(Evas *e, Evas_Object *stop, int x, int y);
 int evas_mem_free(int mem_required);
 int evas_mem_degrade(int mem_required);
@@ -1938,9 +1938,8 @@ void _evas_device_cleanup(Evas *e);
 Evas_Device *_evas_device_top_get(const Evas *e);
 
 /* legacy/eo events */
-Eina_Bool efl_event_pointer_legacy_info_set(Efl_Event_Pointer *evt, const void *event_info, Evas_Callback_Type type);
-const void *efl_event_pointer_legacy_info_get(const Efl_Event_Pointer *evt, Evas_Callback_Type *ptype, Eina_Bool multi);
-Eina_Bool efl_event_key_legacy_info_set(Efl_Event_Key *evt, const void *event_info, Evas_Callback_Type type);
+Eina_Bool efl_event_pointer_legacy_info_set(Efl_Event_Pointer *evt, void *event_info, Evas_Callback_Type type);
+Eina_Bool efl_event_key_legacy_info_set(Efl_Event_Key *evt, void *event_info, Evas_Callback_Type type);
 
 Eina_Bool evas_vg_loader_svg(Evas_Object *vg, const Eina_File *f, const char *key EINA_UNUSED);