diff --git a/src/lib/evas/canvas/evas_callbacks.c b/src/lib/evas/canvas/evas_callbacks.c index 6db38e81f4..37e62976ff 100644 --- a/src/lib/evas/canvas/evas_callbacks.c +++ b/src/lib/evas/canvas/evas_callbacks.c @@ -792,12 +792,17 @@ _check_event_catcher_add(void *data, const Efl_Event *event) const Efl_Callback_Array_Item_Full *array = event->info; Evas_Object_Protected_Data *obj = data; Evas_Callback_Type type = EVAS_CALLBACK_LAST; + void *gd = NULL; int i; for (i = 0; array[i].desc != NULL; i++) { if (obj->layer->evas->gesture_manager) - _efl_canvas_gesture_manager_callback_add_hook(obj->layer->evas->gesture_manager, obj->object, array[i].desc); + { + if (!gd) gd = _efl_canvas_gesture_manager_private_data_get(obj->layer->evas->gesture_manager); + + _efl_canvas_gesture_manager_callback_add_hook(gd, obj->object, array[i].desc); + } if (array[i].desc == EFL_EVENT_ANIMATOR_TICK) { @@ -819,6 +824,7 @@ _check_event_catcher_del(void *data, const Efl_Event *event) { const Efl_Callback_Array_Item_Full *array = event->info; Evas_Object_Protected_Data *obj = data; + void *gd = NULL; int i; if (!obj->layer || @@ -828,7 +834,11 @@ _check_event_catcher_del(void *data, const Efl_Event *event) for (i = 0; array[i].desc != NULL; i++) { if (obj->layer->evas->gesture_manager) - _efl_canvas_gesture_manager_callback_del_hook(obj->layer->evas->gesture_manager, obj->object, array[i].desc); + { + if (!gd) gd = _efl_canvas_gesture_manager_private_data_get(obj->layer->evas->gesture_manager); + + _efl_canvas_gesture_manager_callback_del_hook(gd, obj->object, array[i].desc); + } if (array[i].desc == EFL_EVENT_ANIMATOR_TICK) { diff --git a/src/lib/evas/gesture/efl_canvas_gesture_manager.c b/src/lib/evas/gesture/efl_canvas_gesture_manager.c index 793c0dbf67..cce00dfe19 100644 --- a/src/lib/evas/gesture/efl_canvas_gesture_manager.c +++ b/src/lib/evas/gesture/efl_canvas_gesture_manager.c @@ -106,9 +106,9 @@ _efl_canvas_gesture_manager_private_data_get(Eo *obj) } void -_efl_canvas_gesture_manager_callback_add_hook(Eo *obj, Eo *target, const Efl_Event_Description *type) +_efl_canvas_gesture_manager_callback_add_hook(void *data, Eo *target, const Efl_Event_Description *type) { - Efl_Canvas_Gesture_Manager_Data *pd = efl_data_scope_get(obj, MY_CLASS); + Efl_Canvas_Gesture_Manager_Data *pd = data; // if there is a recognizer registered for that event then add it to the gesture context Efl_Canvas_Gesture_Recognizer *recognizer = eina_hash_find (pd->m_recognizers, &type); if (recognizer) @@ -119,9 +119,9 @@ _efl_canvas_gesture_manager_callback_add_hook(Eo *obj, Eo *target, const Efl_Eve } void -_efl_canvas_gesture_manager_callback_del_hook(Eo *obj, Eo *target, const Efl_Event_Description *type) +_efl_canvas_gesture_manager_callback_del_hook(void *data, Eo *target, const Efl_Event_Description *type) { - Efl_Canvas_Gesture_Manager_Data *pd = efl_data_scope_get(obj, MY_CLASS); + Efl_Canvas_Gesture_Manager_Data *pd = data; // if there is a recognizer registered for that event then add it to the gesture context Efl_Canvas_Gesture_Recognizer *recognizer = eina_hash_find (pd->m_recognizers, &type); if (recognizer) diff --git a/src/lib/evas/include/evas_private.h b/src/lib/evas/include/evas_private.h index ba1d21651c..8599369ae9 100644 --- a/src/lib/evas/include/evas_private.h +++ b/src/lib/evas/include/evas_private.h @@ -1898,8 +1898,8 @@ void evas_object_pixels_get_force(Evas_Object *eo_obj, Evas_Object_Protected_Dat // Gesture Manager void *_efl_canvas_gesture_manager_private_data_get(Eo *obj); void _efl_canvas_gesture_manager_filter_event(Eo *gesture_manager, Eo *target, void *event); -void _efl_canvas_gesture_manager_callback_del_hook(Eo *gesture_manager, Eo *target, const Efl_Event_Description *type); -void _efl_canvas_gesture_manager_callback_add_hook(Eo *gesture_manager, Eo *target, const Efl_Event_Description *type); +void _efl_canvas_gesture_manager_callback_del_hook(void *data, Eo *target, const Efl_Event_Description *type); +void _efl_canvas_gesture_manager_callback_add_hook(void *data, Eo *target, const Efl_Event_Description *type); //evas focus functions void evas_focus_init(void);