How to avoid handling the moving event with zooming gesture event for a same move
This code shows a method to avoid handling moving event redundantly with zooming gesture.
typedef enum Gesture_state {
GESTURE_STATE_NONE,
GESTURE_STATE_ZOOMING,
}Ges_state;
...
static void init_gl(Evas_Object *obj) {
...
ad->ges_state = GESTURE_STATE_NONE;
}
...
static Evas_Event_Flags zoom_start_cb(void *data , void *event_info)
{
...
ad->ges_state = GESTURE_STATE_ZOOMING;
...
}
...
static Evas_Event_Flags zoom_end_cb(void *data , void *event_info)
{
...
ad->ges_state = GESTURE_STATE_NONE;
return EVAS_EVENT_FLAG_NONE;
}
static Evas_Event_Flags zoom_abort_cb(void *data , void *event_info)
{
...
ad->ges_state = GESTURE_STATE_NONE;
return EVAS_EVENT_FLAG_NONE;
}
...
static void
mouse_move_cb(void *data, Evas *e , Evas_Object *obj , void *event_info)
{
appdata_s *ad = data;
if(GESTURE_STATE_NONE != ad->ges_state)
{
dlog_print(DLOG_ERROR, "sample:mouse_move_cb", "skipped this cb because gesture is detecting!");
return;
}
...
}