evas/gesture: Integrated gesture framework to evas.

This commit is contained in:
smohanty 2017-09-19 17:17:39 +09:00 committed by Jean-Philippe Andre
parent 9da7a7f0d2
commit 28869a9395
3 changed files with 28 additions and 1 deletions

View File

@ -378,6 +378,15 @@ evas_object_event_callback_call(Evas_Object *eo_obj, Evas_Object_Protected_Data
_evas_walk(e);
// gesture hook
if ( type == EVAS_CALLBACK_MOUSE_MOVE ||
type == EVAS_CALLBACK_MULTI_MOVE ||
type == EVAS_CALLBACK_MOUSE_DOWN ||
type == EVAS_CALLBACK_MULTI_DOWN ||
type == EVAS_CALLBACK_MOUSE_UP ||
type == EVAS_CALLBACK_MULTI_UP)
_efl_gesture_manager_filter_event(e->gesture_manager, eo_obj, event_info);
if (!_evas_object_callback_has_by_type(obj, type))
goto nothing_here;
@ -698,6 +707,9 @@ _check_event_catcher_add(void *data, const Efl_Event *event)
for (i = 0; array[i].desc != NULL; i++)
{
if (obj->layer->evas->gesture_manager)
_efl_gesture_manager_callback_add_hook(obj->layer->evas->gesture_manager, obj->object, array[i].desc);
if (array[i].desc == EFL_EVENT_ANIMATOR_TICK)
{
if (obj->animator_ref++ > 0) break;
@ -722,6 +734,9 @@ _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_gesture_manager_callback_del_hook(obj->layer->evas->gesture_manager, obj->object, array[i].desc);
if (array[i].desc == EFL_EVENT_ANIMATOR_TICK)
{
if ((--obj->animator_ref) > 0) break;

View File

@ -225,6 +225,8 @@ _evas_canvas_efl_object_constructor(Eo *eo_obj, Evas_Public_Data *e)
eina_clist_init(&e->calc_list);
eina_clist_init(&e->calc_done);
e->gesture_manager = efl_add(EFL_GESTURE_MANAGER_CLASS, eo_obj);
#define EVAS_ARRAY_SET(E, Array) \
eina_array_step_set(&E->Array, sizeof (E->Array), \
((1024 * sizeof (void*)) - sizeof (E->Array)) / sizeof (void*));
@ -295,6 +297,9 @@ _evas_canvas_efl_object_destructor(Eo *eo_e, Evas_Public_Data *e)
_evas_post_event_callback_free(eo_e);
_evas_canvas_event_shutdown(eo_e, e);
efl_del(e->gesture_manager);
e->gesture_manager = NULL;
del = EINA_TRUE;
e->walking_list++;
e->cleanup = 1;
@ -1247,7 +1252,7 @@ _evas_pointer_data_remove(Evas_Public_Data *edata, Efl_Input_Device *pointer)
Evas_Pointer_Seat *pseat;
Eo *seat;
seat = efl_input_device_seat_get(pointer);
seat = efl_input_device_seat_get(pointer);
EINA_INLIST_FOREACH(edata->seats, pseat)
{
if (pseat->seat != seat) continue;

View File

@ -934,6 +934,7 @@ struct _Evas_Public_Data
int in_smart_calc;
int smart_calc_count;
Eo *gesture_manager;
Eo *pending_default_focus_obj;
Eina_Hash *focused_objects; //Key - seat; value - the focused object
Eina_List *focused_by; //Which seat has the canvas focus
@ -2015,6 +2016,12 @@ Eina_List *_evas_pointer_list_in_rect_get(Evas_Public_Data *edata,
void efl_canvas_output_info_get(Evas_Public_Data *e, Efl_Canvas_Output *output);
// Gesture Manager
void _efl_gesture_manager_filter_event(Eo *gesture_manager, Eo *target, void *event);
void _efl_gesture_manager_callback_del_hook(Eo *gesture_manager, Eo *target, const Efl_Event_Description *type);
void _efl_gesture_manager_callback_add_hook(Eo *gesture_manager, Eo *target, const Efl_Event_Description *type);
extern Eina_Cow *evas_object_proxy_cow;
extern Eina_Cow *evas_object_map_cow;
extern Eina_Cow *evas_object_state_cow;