From: Jean-Philippe Andre Date: Wed, 1 Jun 2016 11:40:18 +0000 (+0900) Subject: Evas: Simplify eo event mechanism X-Git-Tag: upstream/1.20.0~6052 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=0505a729e2bf46c99d1574f60e46b26ad9c3446c;p=platform%2Fupstream%2Fefl.git Evas: Simplify eo event mechanism 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(). --- diff --git a/src/lib/ecore_evas/ecore_evas.c b/src/lib/ecore_evas/ecore_evas.c index 24c287f..c8728e4 100644 --- a/src/lib/ecore_evas/ecore_evas.c +++ b/src/lib/ecore_evas/ecore_evas.c @@ -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; } diff --git a/src/lib/efl/interfaces/efl_common_internal.h b/src/lib/efl/interfaces/efl_common_internal.h index 2523c54..b7eb818 100644 --- a/src/lib/efl/interfaces/efl_common_internal.h +++ b/src/lib/efl/interfaces/efl_common_internal.h @@ -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 */ }; diff --git a/src/lib/evas/Evas_Common.h b/src/lib/evas/Evas_Common.h index 65db02c..fbd6554f 100644 --- a/src/lib/evas/Evas_Common.h +++ b/src/lib/evas/Evas_Common.h @@ -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 */ diff --git a/src/lib/evas/canvas/efl_event_pointer.c b/src/lib/evas/canvas/efl_event_pointer.c index ca3a6c2..35688dc 100644 --- a/src/lib/evas/canvas/efl_event_pointer.c +++ b/src/lib/evas/canvas/efl_event_pointer.c @@ -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; diff --git a/src/lib/evas/canvas/evas_callbacks.c b/src/lib/evas/canvas/evas_callbacks.c index 8b6a996..5bb69aa 100644 --- a/src/lib/evas/canvas/evas_callbacks.c +++ b/src/lib/evas/canvas/evas_callbacks.c @@ -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); diff --git a/src/lib/evas/canvas/evas_events.c b/src/lib/evas/canvas/evas_events.c index e3c837f..7fac4ad 100644 --- a/src/lib/evas/canvas/evas_events.c +++ b/src/lib/evas/canvas/evas_events.c @@ -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; } diff --git a/src/lib/evas/canvas/evas_events_legacy.c b/src/lib/evas/canvas/evas_events_legacy.c index 9dd0c3d..d11eb3b 100644 --- a/src/lib/evas/canvas/evas_events_legacy.c +++ b/src/lib/evas/canvas/evas_events_legacy.c @@ -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; } diff --git a/src/lib/evas/canvas/evas_focus.c b/src/lib/evas/canvas/evas_focus.c index daa76ae..f9344e1 100644 --- a/src/lib/evas/canvas/evas_focus.c +++ b/src/lib/evas/canvas/evas_focus.c @@ -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); } diff --git a/src/lib/evas/canvas/evas_object_inform.c b/src/lib/evas/canvas/evas_object_inform.c index d6689a3..7a0da25 100644 --- a/src/lib/evas/canvas/evas_object_inform.c +++ b/src/lib/evas/canvas/evas_object_inform.c @@ -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); } diff --git a/src/lib/evas/canvas/evas_object_main.c b/src/lib/evas/canvas/evas_object_main.c index e3ac031..7e2950a 100644 --- a/src/lib/evas/canvas/evas_object_main.c +++ b/src/lib/evas/canvas/evas_object_main.c @@ -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); diff --git a/src/lib/evas/include/evas_private.h b/src/lib/evas/include/evas_private.h index abeb6c0..9fc022d 100644 --- a/src/lib/evas/include/evas_private.h +++ b/src/lib/evas/include/evas_private.h @@ -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);