evas/gesture: Integrated gesture framework to evas.
This commit is contained in:
parent
9da7a7f0d2
commit
28869a9395
|
@ -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;
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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;
|
||||
|
|
Loading…
Reference in New Issue