forked from enlightenment/efl
gesture_manager: Filter events we add hooks for
Gesture manager doesn't care about focus manager events, animation events, and various other things it's currently hooking. We can save a lot of pointer indirection nonsense by only paying attention to events it can actually do something with. Differential Revision: https://phab.enlightenment.org/D7764 Signed-off-by: Derek Foreman <derek.foreman.samsung@gmail.com>
This commit is contained in:
parent
41a9e1c873
commit
d47688ba27
|
@ -797,7 +797,8 @@ _check_event_catcher_add(void *data, const Efl_Event *event)
|
|||
|
||||
for (i = 0; array[i].desc != NULL; i++)
|
||||
{
|
||||
if (obj->layer->evas->gesture_manager)
|
||||
if (obj->layer->evas->gesture_manager &&
|
||||
_efl_canvas_gesture_manager_watches(array[i].desc))
|
||||
{
|
||||
if (!gd) gd = _efl_canvas_gesture_manager_private_data_get(obj->layer->evas->gesture_manager);
|
||||
|
||||
|
@ -833,7 +834,8 @@ _check_event_catcher_del(void *data, const Efl_Event *event)
|
|||
|
||||
for (i = 0; array[i].desc != NULL; i++)
|
||||
{
|
||||
if (obj->layer->evas->gesture_manager)
|
||||
if (obj->layer->evas->gesture_manager &&
|
||||
_efl_canvas_gesture_manager_watches(array[i].desc))
|
||||
{
|
||||
if (!gd) gd = _efl_canvas_gesture_manager_private_data_get(obj->layer->evas->gesture_manager);
|
||||
|
||||
|
|
|
@ -352,5 +352,23 @@ _cleanup_cached_gestures(Efl_Canvas_Gesture_Manager_Data *pd,
|
|||
}
|
||||
}
|
||||
|
||||
Eina_Bool
|
||||
_efl_canvas_gesture_manager_watches(const Efl_Event_Description *ev)
|
||||
{
|
||||
/* These are a subset of _elm_win_evas_feed_fake_callbacks
|
||||
* in efl_ui_win.c */
|
||||
if ((ev == EFL_EVENT_POINTER_MOVE) ||
|
||||
(ev == EFL_EVENT_POINTER_DOWN) ||
|
||||
(ev == EFL_EVENT_POINTER_UP) ||
|
||||
(ev == EFL_EVENT_POINTER_IN) ||
|
||||
(ev == EFL_EVENT_POINTER_OUT) ||
|
||||
(ev == EFL_EVENT_POINTER_CANCEL) ||
|
||||
(ev == EFL_EVENT_POINTER_WHEEL) ||
|
||||
(ev == EFL_EVENT_FINGER_MOVE) ||
|
||||
(ev == EFL_EVENT_FINGER_DOWN) ||
|
||||
(ev == EFL_EVENT_FINGER_UP))
|
||||
return EINA_TRUE;
|
||||
return EINA_FALSE;
|
||||
}
|
||||
|
||||
#include "efl_canvas_gesture_manager.eo.c"
|
||||
|
|
|
@ -1900,6 +1900,7 @@ 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(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);
|
||||
Eina_Bool _efl_canvas_gesture_manager_watches(const Efl_Event_Description *ev);
|
||||
|
||||
//evas focus functions
|
||||
void evas_focus_init(void);
|
||||
|
|
Loading…
Reference in New Issue